Package: ring Version: 20160630.3.52c5ef6~dfsg1-1 Severity: wishlist Hi. I wanted to give ring a try on my Jessie laptop, and for that I needed to build the package from unstable. But it fail to build. Here is a patch to get it compiling, but unfortunately it isn't enough. The code fail to link. Any clues to spare on how to get it to build in Jessie?
The first patch I had to do was to disable some video4linux types that are unknown in Jessie: diff -ur ring-20160630.3.52c5ef6~dfsg1/daemon/src/media/video/v4l2/video_device_impl.cpp ring-20160630.3.52c5ef6~dfsg1-pere/daemon/src/media/video/v4l2/video_device_impl.cpp --- ring-20160630.3.52c5ef6~dfsg1/daemon/src/media/video/v4l2/video_device_impl.cpp 2016-07-01 07:02:27.000000000 +0200 +++ ring-20160630.3.52c5ef6~dfsg1-pere/daemon/src/media/video/v4l2/video_device_impl.cpp 2016-07-07 18:56:08.910677353 +0200 @@ -183,7 +183,9 @@ V4L2_PIX_FMT_MPEG, V4L2_PIX_FMT_H264, V4L2_PIX_FMT_H264_NO_SC, +#ifdef V4L2_PIX_FMT_H264_MVC V4L2_PIX_FMT_H264_MVC, +#endif V4L2_PIX_FMT_H263, V4L2_PIX_FMT_MPEG1, V4L2_PIX_FMT_MPEG2, @@ -191,7 +193,9 @@ V4L2_PIX_FMT_XVID, V4L2_PIX_FMT_VC1_ANNEX_G, V4L2_PIX_FMT_VC1_ANNEX_L, +#ifdef V4L2_PIX_FMT_VP8 V4L2_PIX_FMT_VP8, +#endif #if 0 /* RGB formats */ @@ -488,7 +492,9 @@ return "mpeg1video"; case V4L2_PIX_FMT_H264: case V4L2_PIX_FMT_H264_NO_SC: +#ifdef V4L2_PIX_FMT_H264_MVC case V4L2_PIX_FMT_H264_MVC: +#endif return "h264"; case V4L2_PIX_FMT_H263: return "h263"; @@ -499,8 +505,10 @@ case V4L2_PIX_FMT_VC1_ANNEX_G: case V4L2_PIX_FMT_VC1_ANNEX_L: return "vc1"; +#ifdef V4L2_PIX_FMT_VP8 case V4L2_PIX_FMT_VP8: return "vp8"; +#endif default: // Most pixel formats do not need any codec return ""; } Next is a more problematic change, which causes the link failure. The problem is that Json::ValueIterator can not be used as a pointer to its value, so p->asString() do not exist. I tried rewriting it as below, and this compiles but complain about missing copy constructor. diff -ur ring-20160630.3.52c5ef6~dfsg1/daemon/src/im/message_engine.cpp ring-20160630.3.52c5ef6~dfsg1-pere/daemon/src/im/message_engine.cpp --- ring-20160630.3.52c5ef6~dfsg1/daemon/src/im/message_engine.cpp 2016-07-07 19:38:23.000000000 +0200 +++ ring-20160630.3.52c5ef6~dfsg1-pere/daemon/src/im/message_engine.cpp 2016-07-07 19:23:00.895869530 +0200 @@ -195,8 +195,10 @@ msg.last_op = clock::now() + (wall_time - std::chrono::system_clock::now()); msg.retried = jmsg.get("retried", 0).asUInt(); const auto& pl = jmsg["payload"]; - for (auto p = pl.begin(); p != pl.end(); ++p) - msg.payloads[p.key().asString()] = p->asString(); + for (auto pit = pl.begin(); pit != pl.end(); ++pit) { + const Json::Value& p = *pit; + msg.payloads[pit.key().asString()] = p.asString(); + } messages_.emplace(token, std::move(msg)); } diff -ur ring-20160630.3.52c5ef6~dfsg1/daemon/src/archiver.cpp ring-20160630.3.52c5ef6~dfsg1-pere/daemon/src/archiver.cpp --- ring-20160630.3.52c5ef6~dfsg1/daemon/src/archiver.cpp 2016-07-07 19:38:23.000000000 +0200 +++ ring-20160630.3.52c5ef6~dfsg1-pere/daemon/src/archiver.cpp 2016-07-07 19:27:02.165960906 +0200 @@ -198,21 +198,22 @@ auto detailsMap = DRing::getAccountTemplate(value[DRing::Account::ConfProperties::TYPE].asString()); for( Json::ValueIterator itr = value.begin() ; itr != value.end() ; itr++ ) { - if (itr->asString().empty()) + const Json::Value& v = *itr; + if (v.asString().empty()) continue; if (itr.key().asString().compare(DRing::Account::ConfProperties::TLS::CA_LIST_FILE) == 0) { - std::string fileContent(itr->asString()); + std::string fileContent(v.asString()); fileutils::saveFile(idPath_ + DIR_SEPARATOR_STR "ca.key", {fileContent.begin(), fileContent.end()}, 0600); } else if (itr.key().asString().compare(DRing::Account::ConfProperties::TLS::PRIVATE_KEY_FILE) == 0) { - std::string fileContent(itr->asString()); + std::string fileContent(v.asString()); fileutils::saveFile(idPath_ + DIR_SEPARATOR_STR "dht.key", {fileContent.begin(), fileContent.end()}, 0600); } else if (itr.key().asString().compare(DRing::Account::ConfProperties::TLS::CERTIFICATE_FILE) == 0) { - std::string fileContent(itr->asString()); + std::string fileContent(v.asString()); fileutils::saveFile(idPath_ + DIR_SEPARATOR_STR "dht.crt", {fileContent.begin(), fileContent.end()}, 0600); } else - detailsMap[itr.key().asString()] = itr->asString(); + detailsMap[itr.key().asString()] = v.asString(); } return detailsMap; Is there a better rewrite available that work with older versions of the json library? -- Happy hacking Petter Reinholdtsen