Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1163188 - FTBFS on s390
Summary: FTBFS on s390
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: syncevolution
Version: 21
Hardware: s390
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Milan Crha
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: ZedoraTracker
TreeView+ depends on / blocked
 
Reported: 2014-11-12 13:18 UTC by Dan Horák
Modified: 2015-06-10 12:54 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-06-10 12:54:42 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
define traits for all standard types (4.76 KB, patch)
2014-11-18 07:42 UTC, Patrick Ohly
no flags Details | Diff
define trait for long long (1.69 KB, patch)
2014-12-12 07:50 UTC, Patrick Ohly
no flags Details | Diff

Description Dan Horák 2014-11-12 13:18:20 UTC
syncevolution 1.5 fails to build on s390 (32 bit) most likely because it expects size_t type to be equivalent to unsigned int, while on s390 it is unsigned long (allowed by the definition of size_t). Usually a typecast on the right place fixes this kind of issues.

from build.log at http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=1599734:
...
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I/builddir/build/BUILD/syncevolution-1.5/src/build-synthesis/src -I/usr/include -I/usr/include/kde4/ -I/usr/include/kde4//KDE -I/usr/include -I/usr/include/QtCore -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/include/neon -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I./test -I./src/gdbusxx -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I./src/syncevo -I./src -DSYNCEVO_LIBEXEC=\"/usr/libexec\" -DSYNCEVO_BACKEND=\"/usr/lib/syncevolution/backends/\" -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DDATA_DIR=\"/usr/share/syncevolution\" -DXML_CONFIG_DIR=\"/usr/share/syncevolution/xml\" -DTEMPLATE_DIR=\"/usr/share/syncevolution/templates\" -DLIBDIR=\"/usr/lib\" -pthread -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/libsoup-gnome-2.4 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/builddir/build/BUILD/syncevolution-1.5/src/build-synthesis/src -Wall -Wno-unknown-pragmas -Wno-deprecated-declarations -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m31 -march=z9-109 -mtune=z10 -c src/syncevo/Cmdline.cpp  -fPIC -DPIC -o src/syncevo/.libs/src_syncevo_libsyncevolution_la-Cmdline.o
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'GDBusCXX::AppendRetvals& GDBusCXX::AppendRetvals::operator<<(const A&) [with A = long unsigned int]':
./src/gdbusxx/gdbus-cxx-bridge.h:4975:34:   required from 'void GDBusCXX::DBusClientCall<CallTraits>::start(const A1&, const A2&, const A3&, const Callback_t&) const [with A1 = std::basic_string<char>; A2 = long unsigned int; A3 = long unsigned int; CallTraits = GDBusCXX::Ret3Traits<std::basic_string<char>, long unsigned int, long unsigned int>; GDBusCXX::DBusClientCall<CallTraits>::Callback_t = boost::function<void(const std::basic_string<char>&, const long unsigned int&, const long unsigned int&, const std::basic_string<char>&)>]'
src/syncevo/LocalTransportAgent.cpp:485:106:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:425:44: error: 'append' is not a member of 'GDBusCXX::dbus_traits<long unsigned int>'
         dbus_traits<A>::append(m_builder, a);
                                            ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]':
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:4121:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A2>::host_type a2;
                                                 ^
./src/gdbusxx/gdbus-cxx-bridge.h:4122:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A3>::host_type a3;
                                                 ^
./src/gdbusxx/gdbus-cxx-bridge.h:4121:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A2>::host_type a2;
                                                 ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'struct GDBusCXX::Get<long unsigned int>':
./src/gdbusxx/gdbus-cxx-bridge.h:4126:55:   required from 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]'
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:565:41: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
     typename dbus_traits<A>::host_type &m_a;
                                         ^
./src/gdbusxx/gdbus-cxx-bridge.h:566:5: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
     Get(typename dbus_traits<A>::host_type &a) : m_a(a) {}
     ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]':
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:4122:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A3>::host_type a3;
                                                 ^
./src/gdbusxx/gdbus-cxx-bridge.h:4121:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A2>::host_type a2;
                                                 ^
./src/gdbusxx/gdbus-cxx-bridge.h:4122:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A3>::host_type a3;
                                                 ^
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'const bool GDBusCXX::DBusResult3<long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&>::asynchronous':
./src/gdbusxx/gdbus-cxx-bridge.h:2804:39:   required from 'const bool GDBusCXX::DBusResult4<const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&>::asynchronous'
./src/gdbusxx/gdbus-cxx-bridge.h:4113:23:   required from 'const bool GDBusCXX::MakeMethodEntry<boost::function<void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)> >::asynchronous'
./src/gdbusxx/gdbus-cxx-bridge.h:4130:17:   required from 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]'
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:2774:39: error: 'asynchronous' is not a member of 'GDBusCXX::dbus_traits<long unsigned int>'
         dbus_traits<A1>::asynchronous ||
                                       ^
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'const bool GDBusCXX::DBusResult2<long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&>::asynchronous':
./src/gdbusxx/gdbus-cxx-bridge.h:2774:39:   required from 'const bool GDBusCXX::DBusResult3<long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&>::asynchronous'
./src/gdbusxx/gdbus-cxx-bridge.h:2804:39:   required from 'const bool GDBusCXX::DBusResult4<const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&>::asynchronous'
./src/gdbusxx/gdbus-cxx-bridge.h:4113:23:   required from 'const bool GDBusCXX::MakeMethodEntry<boost::function<void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)> >::asynchronous'
./src/gdbusxx/gdbus-cxx-bridge.h:4130:17:   required from 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]'
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:2743:39: error: 'asynchronous' is not a member of 'GDBusCXX::dbus_traits<long unsigned int>'
         dbus_traits<A1>::asynchronous ||
                                       ^
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]':
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:4121:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A2>::host_type a2;
                                                 ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'struct GDBusCXX::Set<long unsigned int>':
./src/gdbusxx/gdbus-cxx-bridge.h:4135:50:   required from 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]'
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:469:5: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
     Set(typename dbus_traits<A>::host_type &a) {}
     ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static GDBusMessage* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::methodFunction(GDBusConnection*, GDBusMessage*, void*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMessage = _GDBusMessage; GDBusConnection = _GDBusConnection]':
./src/gdbusxx/gdbus-cxx-bridge.h:1233:103:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:4122:49: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
             typename dbus_traits<A3>::host_type a3;
                                                 ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'void GDBusCXX::appendNewArg(GPtrArray*) [with Arg = long unsigned int; GPtrArray = _GPtrArray]':
./src/gdbusxx/gdbus-cxx-bridge.h:4151:32:   required from 'static GDBusMethodInfo* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::make(const char*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMethodInfo = _GDBusMethodInfo]'
./src/gdbusxx/gdbus-cxx-bridge.h:1229:57:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:736:54: error: 'getSignature' is not a member of 'GDBusCXX::dbus_traits<long unsigned int>'
     appendArgInfo(pa, dbus_traits<Arg>::getSignature());
                                                      ^
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'void GDBusCXX::appendNewArgForReply(GPtrArray*) [with Arg = long unsigned int; GPtrArray = _GPtrArray]':
./src/gdbusxx/gdbus-cxx-bridge.h:4158:41:   required from 'static GDBusMethodInfo* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4)> >::make(const char*) [with A1 = const std::basic_string<char>&; A2 = long unsigned int; A3 = long unsigned int; A4 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMethodInfo = _GDBusMethodInfo]'
./src/gdbusxx/gdbus-cxx-bridge.h:1229:57:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, long unsigned int, long unsigned int, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:840:98:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:743:50: error: 'getReply' is not a member of 'GDBusCXX::dbus_traits<long unsigned int>'
     appendArgInfo(pa, dbus_traits<Arg>::getReply());
                                                  ^
In file included from ./src/syncevo/ForkExec.h:33:0,
                 from ./src/syncevo/LocalTransportAgent.h:29,
                 from src/syncevo/LocalTransportAgent.cpp:20:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static void GDBusCXX::Ret3Traits<R1, R2, R3>::handleMessage(GDBusCXX::DBusMessagePtr&, typename GDBusCXX::Ret3Traits<R1, R2, R3>::base::CallbackData*, GError*) [with R1 = std::basic_string<char>; R2 = long unsigned int; R3 = long unsigned int; typename GDBusCXX::Ret3Traits<R1, R2, R3>::base::CallbackData = GDBusCXX::TraitsBase<boost::function<void(const std::basic_string<char>&, const long unsigned int&, const long unsigned int&, const std::basic_string<char>&)>, boost::tuples::tuple<std::basic_string<char>, long unsigned int, long unsigned int, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::CallbackData; GError = _GError]':
./src/gdbusxx/gdbus-cxx-bridge.h:4851:55:   required from 'static void GDBusCXX::DBusClientCall<CallTraits>::dbusCallback(GObject*, GAsyncResult*, void*) [with CallTraits = GDBusCXX::Ret3Traits<std::basic_string<char>, long unsigned int, long unsigned int>; GObject = _GObject; GAsyncResult = _GAsyncResult]'
./src/gdbusxx/gdbus-cxx-bridge.h:4877:81:   required from 'void GDBusCXX::DBusClientCall<CallTraits>::send(GDBusCXX::DBusMessagePtr&, const Callback_t&) const [with CallTraits = GDBusCXX::Ret3Traits<std::basic_string<char>, long unsigned int, long unsigned int>; GDBusCXX::DBusClientCall<CallTraits>::Callback_t = boost::function<void(const std::basic_string<char>&, const long unsigned int&, const long unsigned int&, const std::basic_string<char>&)>]'
./src/gdbusxx/gdbus-cxx-bridge.h:5054:27:   required from 'void GDBusCXX::DBusClientCall<CallTraits>::start(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const Callback_t&) const [with A1 = std::basic_string<char>; A2 = std::pair<std::basic_string<char>, std::basic_string<char> >; A3 = std::basic_string<char>; A4 = bool; A5 = std::pair<SyncEvo::UserIdentity, SyncEvo::InitState<std::basic_string<char> > >; A6 = SyncEvo::FullProps; A7 = std::map<std::basic_string<char>, std::pair<std::basic_string<char>, std::basic_string<char> > >; CallTraits = GDBusCXX::Ret3Traits<std::basic_string<char>, long unsigned int, long unsigned int>; GDBusCXX::DBusClientCall<CallTraits>::Callback_t = boost::function<void(const std::basic_string<char>&, const long unsigned int&, const long unsigned int&, const std::basic_string<char>&)>]'
src/syncevo/LocalTransportAgent.cpp:353:104:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:4804:45: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
         typename dbus_traits<R2>::host_type r2;
                                             ^
./src/gdbusxx/gdbus-cxx-bridge.h:4805:45: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
         typename dbus_traits<R3>::host_type r3;
                                             ^
./src/gdbusxx/gdbus-cxx-bridge.h:4804:45: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
         typename dbus_traits<R2>::host_type r2;
                                             ^
./src/gdbusxx/gdbus-cxx-bridge.h:4805:45: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
         typename dbus_traits<R3>::host_type r3;
                                             ^
./src/gdbusxx/gdbus-cxx-bridge.h:4804:45: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
         typename dbus_traits<R2>::host_type r2;
                                             ^
./src/gdbusxx/gdbus-cxx-bridge.h:4805:45: error: no type named 'host_type' in 'struct GDBusCXX::dbus_traits<long unsigned int>'
         typename dbus_traits<R3>::host_type r3;
                                             ^
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static std::string GDBusCXX::DBusResult2<A1, A2>::getSignature() [with A1 = long unsigned int; A2 = long unsigned int; std::string = std::basic_string<char>]':
./src/gdbusxx/gdbus-cxx-bridge.h:2770:47:   required from 'static std::string GDBusCXX::DBusResult3<A1, A2, A3>::getSignature() [with A1 = std::basic_string<char>; A2 = long unsigned int; A3 = long unsigned int; std::string = std::basic_string<char>]'
./src/gdbusxx/gdbus-cxx-bridge.h:3039:63:   required from 'static std::string GDBusCXX::dbus_traits_result<R, DBusR>::getType() [with R = GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int>; DBusR = GDBusCXX::DBusResult3<std::basic_string<char>, long unsigned int, long unsigned int>; std::string = std::basic_string<char>]'
./src/gdbusxx/gdbus-cxx-bridge.h:3041:52:   required from 'static std::string GDBusCXX::dbus_traits_result<R, DBusR>::getReply() [with R = GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int>; DBusR = GDBusCXX::DBusResult3<std::basic_string<char>, long unsigned int, long unsigned int>; std::string = std::basic_string<char>]'
./src/gdbusxx/gdbus-cxx-bridge.h:743:50:   required from 'void GDBusCXX::appendNewArgForReply(GPtrArray*) [with Arg = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GPtrArray = _GPtrArray]'
./src/gdbusxx/gdbus-cxx-bridge.h:3535:41:   required from 'static GDBusMethodInfo* GDBusCXX::MakeMethodEntry<boost::function<void(A1, A2, A3, A4, A5, A6, A7, A8)> >::make(const char*) [with A1 = const std::basic_string<char>&; A2 = const std::pair<std::basic_string<char>, std::basic_string<char> >&; A3 = const std::basic_string<char>&; A4 = bool; A5 = const std::pair<SyncEvo::UserIdentity, SyncEvo::InitState<std::basic_string<char> > >&; A6 = const SyncEvo::FullProps&; A7 = const std::map<std::basic_string<char>, std::pair<std::basic_string<char>, std::basic_string<char> > >&; A8 = const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&; GDBusMethodInfo = _GDBusMethodInfo]'
./src/gdbusxx/gdbus-cxx-bridge.h:1229:57:   required from 'void GDBusCXX::DBusObjectHelper::add(A1, M C::*, const char*) [with A1 = SyncEvo::LocalTransportAgentChild*; C = SyncEvo::LocalTransportAgentChild; M = void(const std::basic_string<char>&, const std::pair<std::basic_string<char>, std::basic_string<char> >&, const std::basic_string<char>&, bool, const std::pair<SyncEvo::UserIdentity, SyncEvo::InitState<std::basic_string<char> > >&, const SyncEvo::FullProps&, const std::map<std::basic_string<char>, std::pair<std::basic_string<char>, std::basic_string<char> > >&, const boost::shared_ptr<GDBusCXX::Result3<std::basic_string<char>, long unsigned int, long unsigned int> >&)]'
src/syncevo/LocalTransportAgent.cpp:839:102:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:2738:46: error: 'getSignature' is not a member of 'GDBusCXX::dbus_traits<long unsigned int>'
         return dbus_traits<A1>::getSignature() +
                                              ^
./src/gdbusxx/gdbus-cxx-bridge.h: In static member function 'static std::string GDBusCXX::DBusResult2<A1, A2>::getSignature() [with A1 = long unsigned int; A2 = long unsigned int; std::string = std::basic_string<char>]':
./src/gdbusxx/gdbus-cxx-bridge.h:2740:5: warning: control reaches end of non-void function [-Wreturn-type]
     }
     ^
Makefile:7990: recipe for target 'src/syncevo/src_syncevo_libsyncevolution_la-LocalTransportAgent.lo' failed
make[2]: *** [src/syncevo/src_syncevo_libsyncevolution_la-LocalTransportAgent.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/builddir/build/BUILD/syncevolution-1.5'
Makefile:10640: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/builddir/build/BUILD/syncevolution-1.5'
Makefile:4219: recipe for target 'all' failed
make: *** [all] Error 2
rm src/dbus/glib/stamp-syncevo-session-bindings.h src/dbus/glib/stamp-syncevo-session-glue.h src/dbus/glib/stamp-syncevo-connection-bindings.h src/dbus/glib/stamp-syncevo-server-glue.h src/dbus/glib/stamp-syncevo-server-bindings.h src/dbus/glib/stamp-syncevo-connection-glue.h
error: Bad exit status from /var/tmp/rpm-tmp.EPQVzw (%build)
RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.EPQVzw (%build)
Child return code was: 1
EXCEPTION: Command failed. See logs for output.
 # ['bash', '--login', '-c', 'rpmbuild -bb --target s390 --nodeps  builddir/build/SPECS/syncevolution.spec']
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/mockbuild/trace_decorator.py", line 70, in trace
    result = func(*args, **kw)
  File "/usr/lib/python2.7/site-packages/mockbuild/util.py", line 377, in do
    raise mockbuild.exception.Error, ("Command failed. See logs for output.\n # %s" % (command,), child.returncode)
Error: Command failed. See logs for output.
 # ['bash', '--login', '-c', 'rpmbuild -bb --target s390 --nodeps  builddir/build/SPECS/syncevolution.spec']
LEAVE do --> EXCEPTION RAISED




Version-Release number of selected component (if applicable):
syncevolution-1.5-1.fc21

Comment 1 Milan Crha 2014-11-12 16:10:32 UTC
Thanks for a bug report.

Patrick, could you have a look, please? In case you'd like to test any proposed patches just let me know and I'll test them in koji for you.

Comment 2 Patrick Ohly 2014-11-13 14:17:29 UTC
The problem is that template specialization does not find a match for integer type size_t = unsigned long. How many bits does that have on S390?

gdbus-cxx-bridge.h has cases for all variations (signed vs. unsigned, 16 to 64 bits):

#include <stdint.h>
...

template<> struct dbus_traits<int16_t> :
    public basic_marshal< int16_t, VariantTypeInt16 >
{
    static std::string getType() { return "n"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};
template<> struct dbus_traits<uint16_t> :
    public basic_marshal< uint16_t, VariantTypeUInt16 >
{
    static std::string getType() { return "q"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};
template<> struct dbus_traits<int32_t> :
    public basic_marshal< int32_t, VariantTypeInt32 >
{
    static std::string getType() { return "i"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};
template<> struct dbus_traits<uint32_t> :
    public basic_marshal< uint32_t, VariantTypeUInt32 >
{
    static std::string getType() { return "u"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};
template<> struct dbus_traits<int64_t> :
    public basic_marshal< int64_t, VariantTypeInt64 >
{
    static std::string getType() { return "x"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};
template<> struct dbus_traits<uint64_t> :
    public basic_marshal< uint64_t, VariantTypeUInt64 >
{
    static std::string getType() { return "t"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};
template<> struct dbus_traits<double> :
    public basic_marshal< double, VariantTypeDouble >
{
    static std::string getType() { return "d"; }
    static std::string getSignature() {return getType(); }
    static std::string getReply() { return ""; }
};

I'm a bit surprised that none of these match size_t.

If mapping size_t does not work, then LocalTransportAgentChild::sendMsg(const std::string &contentType, size_t offset, size_t len, const LocalTransportChild::ReplyPtr &reply) could be changed to use e.g. uint64_t instead for offset and len. Should work without compiler warnings on all platforms where uint64_t  >= size_t, and on platforms where uint64_t < size_t (S390?), the fairly harmless warning about type size reduction can be ignored because the actual message sizes should be much smaller.

Comment 3 Dan Horák 2014-11-13 20:26:45 UTC
(In reply to Patrick Ohly from comment #2)
> The problem is that template specialization does not find a match for
> integer type size_t = unsigned long. How many bits does that have on S390?

sizeof(size_t) == 4, I think the problem is that your uint32 is defined as "unsigned int", but it is not compatible with "unsigned long" for the compiler even when they are effectively the same size

Comment 4 Patrick Ohly 2014-11-14 19:51:30 UTC
I see. I guess I was lucky that on other platforms size_t was defined identically to one of the fixed-size types.

The following patch replaces the fixed-size types with all combinations of the standard types that may be needed. It works like that on my regular test platforms (32 and 64 bit, different Linux distros). Can you give that a try for S390?

diff --git a/src/gdbusxx/gdbus-cxx-bridge.h b/src/gdbusxx/gdbus-cxx-bridge.h
index 9b78023..6feaeaa 100644
--- a/src/gdbusxx/gdbus-cxx-bridge.h
+++ b/src/gdbusxx/gdbus-cxx-bridge.h
@@ -76,6 +76,7 @@
 #include <boost/algorithm/string/join.hpp>
 #include <boost/tuple/tuple.hpp>
 #include <boost/utility.hpp>
+#include <boost/type_traits/is_signed.hpp>
 
 /* The SyncEvolution exception handler must integrate into the D-Bus
  * C++ wrapper. In contrast to the rest of the code, that handler uses
@@ -1405,48 +1406,63 @@ template<> struct dbus_traits<int8_t> : dbus_traits<uint8_t>
     }
 };
 
-template<> struct dbus_traits<int16_t> :
-    public basic_marshal< int16_t, VariantTypeInt16 >
+/** runtime detection of integer representation */
+template<typename I, bool issigned, size_t bytes> struct dbus_traits_integer_switch {};
+template<typename I> struct dbus_traits_integer_switch<I, true, 2> :
+    public basic_marshal< I, VariantTypeInt16 >
 {
     static std::string getType() { return "n"; }
     static std::string getSignature() {return getType(); }
     static std::string getReply() { return ""; }
 };
-template<> struct dbus_traits<uint16_t> :
-    public basic_marshal< uint16_t, VariantTypeUInt16 >
+template<typename I> struct dbus_traits_integer_switch<I, false, 2> :
+    public basic_marshal< I, VariantTypeUInt16 >
 {
     static std::string getType() { return "q"; }
     static std::string getSignature() {return getType(); }
     static std::string getReply() { return ""; }
 };
-template<> struct dbus_traits<int32_t> :
-    public basic_marshal< int32_t, VariantTypeInt32 >
+template<typename I> struct dbus_traits_integer_switch<I, true, 4> :
+    public basic_marshal< I, VariantTypeInt32 >
 {
     static std::string getType() { return "i"; }
     static std::string getSignature() {return getType(); }
     static std::string getReply() { return ""; }
 };
-template<> struct dbus_traits<uint32_t> :
-    public basic_marshal< uint32_t, VariantTypeUInt32 >
+template<typename I> struct dbus_traits_integer_switch<I, false, 4> :
+    public basic_marshal< I, VariantTypeUInt32 >
 {
     static std::string getType() { return "u"; }
     static std::string getSignature() {return getType(); }
     static std::string getReply() { return ""; }
 };
-template<> struct dbus_traits<int64_t> :
-    public basic_marshal< int64_t, VariantTypeInt64 >
+template<typename I> struct dbus_traits_integer_switch<I, true, 8> :
+    public basic_marshal< I, VariantTypeInt64 >
 {
     static std::string getType() { return "x"; }
     static std::string getSignature() {return getType(); }
     static std::string getReply() { return ""; }
 };
-template<> struct dbus_traits<uint64_t> :
-    public basic_marshal< uint64_t, VariantTypeUInt64 >
+template<typename I> struct dbus_traits_integer_switch<I, false, 8> :
+    public basic_marshal< I, VariantTypeUInt64 >
 {
     static std::string getType() { return "t"; }
     static std::string getSignature() {return getType(); }
     static std::string getReply() { return ""; }
 };
+
+template<typename I> struct dbus_traits_integer : public dbus_traits_integer_switch<I, boost::is_signed<I>::value, sizeof(I)> {};
+
+// Some of these types may have the same underlying representation, but they are
+// still considered different types by the compiler and thus we must have dbus_traits
+// for all of them.
+template<> struct dbus_traits<signed short> : public dbus_traits_integer<signed short> {};
+template<> struct dbus_traits<unsigned short> : public dbus_traits_integer<unsigned short> {};
+template<> struct dbus_traits<signed int> : public dbus_traits_integer<signed int> {};
+template<> struct dbus_traits<unsigned int> : public dbus_traits_integer<unsigned int> {};
+template<> struct dbus_traits<signed long> : public dbus_traits_integer<signed long> {};
+template<> struct dbus_traits<unsigned long> : public dbus_traits_integer<unsigned long> {};
+
 template<> struct dbus_traits<double> :
     public basic_marshal< double, VariantTypeDouble >
 {

Comment 5 Milan Crha 2014-11-18 05:25:27 UTC
Patrick, could you attach the patch instead, please? Bugzilla wraps the lines and otherwise garbles the letters (for example tabs versus spaces), thus an attached patch will make it easier for testing.

Comment 6 Patrick Ohly 2014-11-18 07:42:11 UTC
Created attachment 958450 [details]
define traits for all standard types

Here's the patch as committed to SyncEvolution master branch.

Comment 7 Dan Horák 2014-11-18 10:56:19 UTC
thanks for the patch, now it fails with

...
/bin/sh ./libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.  -I/builddir/build/BUILD/syncevolution-1.5/src -I./test -I/builddir/build/BUILD/syncevolution-1.5/src/build-synthesis/src     -I/usr/include  -I/usr/include/kde4/ -I/usr/include/kde4//KDE -I/usr/include -I/usr/include/QtCore -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include       -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/include/neon  -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/include/neon  -Wall -Wno-unknown-pragmas -Wno-deprecated-declarations  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m31 -march=z9-109 -mtune=z10 -c -o src/backends/webdav/src_backends_webdav_syncdav_la-CalDAVSource.lo `test -f 'src/backends/webdav/CalDAVSource.cpp' || echo './'`src/backends/webdav/CalDAVSource.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I/builddir/build/BUILD/syncevolution-1.5/src -I./test -I/builddir/build/BUILD/syncevolution-1.5/src/build-synthesis/src -I/usr/include -I/usr/include/kde4/ -I/usr/include/kde4//KDE -I/usr/include -I/usr/include/QtCore -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/evolution-data-server -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/libsecret-1 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/include/neon -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_LARGEFILE64_SOURCE -DNE_LFS -I/usr/include/neon -Wall -Wno-unknown-pragmas -Wno-deprecated-declarations -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m31 -march=z9-109 -mtune=z10 -c src/backends/webdav/CalDAVSource.cpp  -fPIC -DPIC -o src/backends/webdav/.libs/src_backends_webdav_syncdav_la-CalDAVSource.o
In file included from src/backends/pbap/PbapSyncSource.cpp:45:0:
./src/gdbusxx/gdbus-cxx-bridge.h: In instantiation of 'static void GDBusCXX::dbus_traits<boost::variant<V> >::get(GDBusCXX::ExtractArgs&, GVariantIter&, boost::variant<V>&) [with V = long long int; GVariantIter = _GVariantIter]':
./src/gdbusxx/gdbus-cxx-bridge.h:5584:51:   required from 'static void GDBusCXX::SignalWatch3<A1, A2, A3>::internalCallback(GDBusConnection*, const gchar*, const gchar*, const gchar*, const gchar*, GVariant*, gpointer) [with A1 = GDBusCXX::Path_t; A2 = std::basic_string<char>; A3 = boost::variant<long long int>; GDBusConnection = _GDBusConnection; gchar = char; GVariant = _GVariant; gpointer = void*]'
./src/gdbusxx/gdbus-cxx-bridge.h:5599:93:   required from 'void GDBusCXX::SignalWatch3<A1, A2, A3>::activate(const Callback_t&) [with A1 = GDBusCXX::Path_t; A2 = std::basic_string<char>; A3 = boost::variant<long long int>; GDBusCXX::SignalWatch3<A1, A2, A3>::Callback_t = boost::function<void(const GDBusCXX::Path_t&, const std::basic_string<char>&, const boost::variant<long long int>&)>]'
src/backends/pbap/PbapSyncSource.cpp:635:111:   required from here
./src/gdbusxx/gdbus-cxx-bridge.h:2088:42: error: 'getSignature' is not a member of 'GDBusCXX::dbus_traits<long long int>'
         if (dbus_traits<V>::getSignature() != type) {
                                          ^
./src/gdbusxx/gdbus-cxx-bridge.h:2096:50: error: 'get' is not a member of 'GDBusCXX::dbus_traits<long long int>'
         dbus_traits<V>::get(context, varIter, val);
                                                  ^


full logs at http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=1610093

Comment 8 Patrick Ohly 2014-11-18 11:14:14 UTC
Okay, so there *is* a non-standard 64bit long long lurking in the code (the PBAP backend in this case, where it talks to the non-SyncEvolution obexd D-Bus API). I hadn't thought of that and it didn't surface in my own compile tests - I need to check why.

Does anyone know of a contemporary Unix platform where "long long" is not a valid, separate type?

The obvious solution would be to add:

template<> struct dbus_traits<signed long long> : public dbus_traits_integer<signed long long> {};
template<> struct dbus_traits<unsigned long long> : public dbus_traits_integer<unsigned long long> {};

But that would fail to compile on platforms where a) "long long" is not valid or b) the same as "long", so additional configure and ifdef checks may be needed.

Comment 9 Patrick Ohly 2014-12-12 07:50:05 UTC
Created attachment 967519 [details]
define trait for long long

It turned out that the PBAP backend was accidentally turned off where it should have been turned on.

Anyway, defining traits for [unsigned] long long seems to work unconditionally and fixes this second problem.

Comment 10 Dan Horák 2015-06-10 12:54:42 UTC
seems fixed with syncevolution-1.5.1-1.fc22 (http://s390.koji.fedoraproject.org/koji/buildinfo?buildID=321789)


Note You need to log in before you can comment on or make changes to this bug.