Hello community, here is the log from the commit of package twinkle for openSUSE:Factory checked in at 2015-07-25 07:44:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/twinkle (Old) and /work/SRC/openSUSE:Factory/.twinkle.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "twinkle" Changes: -------- --- /work/SRC/openSUSE:Factory/twinkle/twinkle.changes 2015-06-09 08:48:54.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.twinkle.new/twinkle.changes 2015-07-25 07:44:35.000000000 +0200 @@ -1,0 +2,19 @@ +Sat Jul 18 15:15:32 UTC 2015 - [email protected] + +- update to version 1.9.0 + * migration to Qt5 and cmake + * added in-call OSD + * remember window geometry and state + * visual feedback when entering DTMF from keyboard + * support past into DTMF window + * remove boost dependency (if gcc >= 4.9) + * eliminated some GUI freezes/stalls +- dependencies and build phase cleanup +- twinkle-ucommon.diff: + removed (no longer needed) +- Revert-Build-fix-for-a-probably-broken-std-match_res.patch: + Revert-Replaced-Boost-regex-dependency-with-C-11-reg.patch: + use boost regex for gcc 4.8 distributions (std::regex is broken + in gcc 4.8) + +------------------------------------------------------------------- Old: ---- twinkle-1.4.2.tar.bz2 twinkle-ucommon.diff New: ---- Revert-Build-fix-for-a-probably-broken-std-match_res.patch Revert-Replaced-Boost-regex-dependency-with-C-11-reg.patch twinkle-1.9.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ twinkle.spec ++++++ --- /var/tmp/diff_new_pack.t6E8d0/_old 2015-07-25 07:44:36.000000000 +0200 +++ /var/tmp/diff_new_pack.t6E8d0/_new 2015-07-25 07:44:36.000000000 +0200 @@ -16,30 +16,42 @@ # -%define _prefix /opt/kde3 Name: twinkle -# BRs in openSUSE: +BuildRequires: alsa-devel BuildRequires: bison -BuildRequires: boost-devel +BuildRequires: cmake +BuildRequires: fdupes BuildRequires: file-devel -BuildRequires: ilbc-devel -BuildRequires: kdelibs3-devel +BuildRequires: flex +BuildRequires: libqt5-qtbase-devel +BuildRequires: libqt5-qttools-devel BuildRequires: libsndfile-devel -BuildRequires: qt3-devel-tools +BuildRequires: libzrtpcpp-devel >= 2.0.0 +BuildRequires: pkgconfig BuildRequires: readline-devel +BuildRequires: update-desktop-files BuildRequires: xorg-x11-devel -# BRs in network:telephony -BuildRequires: libzrtpcpp2-devel >= 2.0.0 -BuildRequires: speex-devel +BuildRequires: pkgconfig(Qt5Declarative) +BuildRequires: pkgconfig(Qt5Quick) +BuildRequires: pkgconfig(commoncpp) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(speex) +BuildRequires: pkgconfig(speexdsp) +%if %{?suse_version} > 1320 +BuildRequires: ilbc-devel +%else +BuildRequires: boost-devel +BuildRequires: ilbc +%endif Summary: A SIP Soft Phone License: GPL-2.0+ Group: Productivity/Telephony/SIP/Clients -Version: 1.4.2 +Version: 1.9.0 Release: 0 -Source: %{name}-%{version}.tar.bz2 -Patch0: twinkle-ucommon.diff -BuildRoot: %{_tmppath}/%{name}-%{version}-build -Url: http://www.twinklephone.com +Source: %{name}-%{version}.tar.xz +Patch11: Revert-Build-fix-for-a-probably-broken-std-match_res.patch +Patch12: Revert-Replaced-Boost-regex-dependency-with-C-11-reg.patch +Url: https://twinkle.dolezel.info/ %description Twinkle is a SIP-based soft phone for making telephone calls over IP @@ -47,30 +59,33 @@ %prep %setup -q -%patch0 -p1 +# workaround for broken std::regex in gcc 4.8 +%if 0%{?suse_version} <= 1320 +%patch11 -p1 +%patch12 -p1 +%endif %build -autoreconf -fi -. /etc/opt/kde3/common_options -export QTDIR=/usr/lib/qt3 -export CFLAGS="$RPM_OPT_FLAGS" CPPFLAGS="$RPM_OPT_FLAGS" -%configure \ - --without-arts --with-qt-libraries=/usr/lib/qt3/%{_lib} -make +cmake \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_CXX_FLAGS="$RPM_OPT_FLAGS" \ + -DWITH_ZRTP=ON -DWITH_SPEEX=ON -DWITH_ILBC=ON \ + -DWITH_ALSA=ON -DWITH_QT5=ON . +make %{?_smp_mflags} %install %makeinstall install -d 755 %{buildroot}%{_datadir}/pixmaps -install -m 644 src/gui/images/twinkle48.png %{buildroot}%{_datadir}/pixmaps/twinkle.png %suse_update_desktop_file -c twinkle Twinkle "SIP VoIP Phone" twinkle twinkle Network Telephony +%fdupes %{buildroot}%{_prefix} %files %defattr(-, root, root) -%doc AUTHORS COPYING README ChangeLog -%{_bindir}/%{name} +%doc AUTHORS COPYING README.md +%{_bindir}/twinkle +%{_bindir}/twinkle-console %{_datadir}/%{name} %{_datadir}/pixmaps/twinkle.png -/usr/share/applications/twinkle.desktop -%dir %{_datadir}/pixmaps +%{_datadir}/applications/twinkle.desktop %changelog ++++++ Revert-Build-fix-for-a-probably-broken-std-match_res.patch ++++++ From: Michal Kubecek <[email protected]> Date: Tue, 14 Jul 2015 08:44:08 +0200 Subject: Revert "Build fix for a (probably?) broken std::match_results::format() overload" Patch-mainline: Never, workaround for gcc 4.8 bug This reverts commit db51799e5b64e406bb83576ad609075142c26a86. As std::regex is broken in gcc < 4.9, we need to stick with boost regex for gcc 4.8 builds. --- src/user.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/user.cpp b/src/user.cpp index ed24674f888a..206cf7ef1719 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -3105,9 +3105,7 @@ string t_user::convert_number(const string &number, const list<t_number_conversi try { if (std::regex_match(number, m, std::regex(i->re))) { - string result; - - m.format(std::back_inserter(result), i->fmt); + string result = m.format(i->fmt); log_file->write_header("t_user::convert_number", LOG_NORMAL, LOG_DEBUG); -- 2.4.5 ++++++ Revert-Replaced-Boost-regex-dependency-with-C-11-reg.patch ++++++ From: Michal Kubecek <[email protected]> Date: Tue, 14 Jul 2015 08:45:28 +0200 Subject: Revert "Replaced Boost regex dependency with C++11 regex" Patch-mainline: Never, workaround for gcc 4.8 bug This reverts commit 4ec69237e6b777df818bc95bd46a58448340b30d. As std::regex is broken in gcc < 4.9, we need to stick with boost regex for gcc 4.8 builds. --- CMakeLists.txt | 3 ++- README.md | 1 + src/CMakeLists.txt | 2 +- src/call_history.cpp | 6 +++--- src/gui/CMakeLists.txt | 2 +- src/gui/numberconversionform.cpp | 4 ++-- src/gui/userprofileform.cpp | 4 ++-- src/mwi/simple_msg_sum_body.cpp | 20 ++++++++++---------- src/user.cpp | 8 ++++---- src/user.h | 8 ++++---- 10 files changed, 30 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d41f74945364..4bf8cbf9fce2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ find_package(LibSndfile REQUIRED) find_package(Readline REQUIRED) find_package(BISON REQUIRED) find_package(FLEX REQUIRED) +find_package(Boost REQUIRED COMPONENTS regex) find_package(Commoncpp REQUIRED) find_package(Ccrtp REQUIRED) find_package(Ucommon REQUIRED) @@ -42,8 +43,8 @@ if (WITH_QT4) elseif (WITH_QT5) find_package(Qt5Widgets REQUIRED) find_package(Qt5LinguistTools REQUIRED) - find_package(Qt5Declarative REQUIRED) find_package(Qt5Quick REQUIRED) + find_package(Qt5Declarative REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS} ${Qt5Declarative_EXECUTABLE_COMPILE_FLAGS}") include_directories(${Qt5Widgets_INCLUDES} ${Qt5Declarative_INCLUDES}) add_definitions(${Qt5Widgets_DEFINITIONS} ${Qt5Declarative_DEFINITIONS}) diff --git a/README.md b/README.md index 15891ff05dcd..2caba485d321 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ To compile Twinkle you need the following libraries: * commoncpp2 and ucommon (version >= 1.4.2) - [GNU Common C++](http://www.gnu.org/software/commoncpp/) * ccRTP (version >= 1.5.0) [GNU RTP Stack](http://www.gnu.org/software/ccrtp/) * libxml2 +* Boost regex * libsndfile * Qt 4 or Qt 5 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b1b06071b4ab..ec3aa62206d8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -79,7 +79,7 @@ endif (WITH_QT4 OR WITH_QT5) target_link_libraries(twinkle-console -lpthread -lresolv ${LibMagic_LIBRARY} ${LIBXML2_LIBRARIES} ${Readline_LIBRARY} ${ILBC_LIBRARIES} ${SPEEX_LIBRARIES} ${ZRTPCPP_LIBRARIES} ${CCRTP_LIBRARIES} ${COMMONCPP_LIBRARIES} ${UCOMMON_LIBRARIES} ${LIBSNDFILE_LIBRARY} - ${ALSA_LIBRARY} ${G729_LIBRARY}) + ${Boost_LIBRARIES} ${ALSA_LIBRARY} ${G729_LIBRARY}) install(TARGETS twinkle-console DESTINATION bin) diff --git a/src/call_history.cpp b/src/call_history.cpp index cf9ff5cbebd4..4fa4af789f11 100644 --- a/src/call_history.cpp +++ b/src/call_history.cpp @@ -296,9 +296,9 @@ bool t_call_record::populate_from_file_record(const vector<string> &v) { // Check number of fields if (v.size() != 20) return false; - time_start = std::stoul(v[0], NULL, 10); - time_answer = std::stoul(v[1], NULL, 10); - time_end = std::stoul(v[2], NULL, 10); + time_start = strtoul(v[0].c_str(), NULL, 10); + time_answer = strtoul(v[1].c_str(), NULL, 10); + time_end = strtoul(v[2].c_str(), NULL, 10); if (!set_direction(v[3])) return false; diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index c178b9c9aced..57b8a195813f 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -134,7 +134,7 @@ add_executable(twinkle ${TWINKLE_GUI-SRCS}) target_link_libraries(twinkle -lpthread -lresolv ${LibMagic_LIBRARY} ${LIBXML2_LIBRARIES} ${Readline_LIBRARY} ${ILBC_LIBRARIES} ${SPEEX_LIBRARIES} ${ZRTPCPP_LIBRARIES} ${CCRTP_LIBRARIES} ${COMMONCPP_LIBRARIES} ${UCOMMON_LIBRARIES} ${LIBSNDFILE_LIBRARY} - ${ALSA_LIBRARY} ${qt_LIBS} ${G729_LIBRARY}) + ${Boost_LIBRARIES} ${ALSA_LIBRARY} ${qt_LIBS} ${G729_LIBRARY}) install(TARGETS twinkle DESTINATION bin) install(FILES ${twinkle_LANG} DESTINATION share/twinkle/lang) diff --git a/src/gui/numberconversionform.cpp b/src/gui/numberconversionform.cpp index f8ae64c59a30..af95dd2ff1a8 100644 --- a/src/gui/numberconversionform.cpp +++ b/src/gui/numberconversionform.cpp @@ -67,8 +67,8 @@ void NumberConversionForm::validate() } try { - std::regex re(expr.toStdString()); - } catch (std::regex_error) { + boost::regex re(expr.toStdString()); + } catch (boost::bad_expression) { ((t_gui *)ui)->cb_show_msg(this, tr("Invalid regular expression.").toStdString(), MSG_CRITICAL); exprLineEdit->setFocus(); diff --git a/src/gui/userprofileform.cpp b/src/gui/userprofileform.cpp index 788d87b1b983..d7f39a0091ac 100644 --- a/src/gui/userprofileform.cpp +++ b/src/gui/userprofileform.cpp @@ -598,7 +598,7 @@ void UserProfileForm::populate() int j = 0; for (list<t_number_conversion>::reverse_iterator i = conversions.rbegin(); i != conversions.rend(); i++, j++) { - QTableWidgetItem* item = new QTableWidgetItem(QString::fromStdString(i->re)); + QTableWidgetItem* item = new QTableWidgetItem(QString::fromStdString(i->re.str())); conversionListView->setItem(j, 0, item); item = new QTableWidgetItem(QString::fromStdString(i->fmt)); conversionListView->setItem(j, 1, item); @@ -712,7 +712,7 @@ list<t_number_conversion> UserProfileForm::get_number_conversions() item = conversionListView->item(0, 1); c.fmt = item->text().toStdString(); conversions.push_back(c); - } catch (std::regex_error) { + } catch (boost::bad_expression) { // Should never happen as validity has been // checked already. Just being defensive here. } diff --git a/src/mwi/simple_msg_sum_body.cpp b/src/mwi/simple_msg_sum_body.cpp index 1d206092009e..33683f7a07ee 100644 --- a/src/mwi/simple_msg_sum_body.cpp +++ b/src/mwi/simple_msg_sum_body.cpp @@ -20,7 +20,7 @@ #include <iostream> #include <cstdlib> -#include <regex> +#include <boost/regex.hpp> #include "protocol.h" #include "util.h" @@ -43,20 +43,20 @@ bool t_msg_summary::parse(const string &s) { // msg-summary-line = message-context-class HCOLON newmsgs SLASH oldmsgs // [ LPAREN new-urgentmsgs SLASH old-urgentmsgs RPAREN ] // This regex matches the part after HCOLON - std::regex re("(\\d+)\\s*/\\s*(\\d+)(?:\\s*\\((\\d+)\\s*/\\s*(\\d+)\\s*\\))?"); + boost::regex re("(\\d+)\\s*/\\s*(\\d+)(?:\\s*\\((\\d+)\\s*/\\s*(\\d+)\\s*\\))?"); - std::smatch m; - if (!std::regex_match(s, m, re)) return false; + boost::smatch m; + if (!boost::regex_match(s, m, re)) return false; if (m.size() == 3) { - newmsgs = std::stoul(m.str(1), NULL, 10); - oldmsgs = std::stoul(m.str(2), NULL, 10); + newmsgs = strtoul(m.str(1).c_str(), NULL, 10); + oldmsgs = strtoul(m.str(2).c_str(), NULL, 10); return true; } else if (m.size() == 5) { - newmsgs = std::stoul(m.str(1), NULL, 10); - oldmsgs = std::stoul(m.str(2), NULL, 10); - newmsgs_urgent = std::stoul(m.str(3), NULL, 10); - oldmsgs_urgent = std::stoul(m.str(4), NULL, 10); + newmsgs = strtoul(m.str(1).c_str(), NULL, 10); + oldmsgs = strtoul(m.str(2).c_str(), NULL, 10); + newmsgs_urgent = strtoul(m.str(3).c_str(), NULL, 10); + oldmsgs_urgent = strtoul(m.str(4).c_str(), NULL, 10); return true; } diff --git a/src/user.cpp b/src/user.cpp index 206cf7ef1719..a6a2a95a7c5e 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -309,7 +309,7 @@ bool t_user::parse_num_conversion(const string &value, t_number_conversion &c) { try { c.re.assign(l[0]); c.fmt = l[1]; - } catch (std::regex_error) { + } catch (boost::bad_expression) { // Invalid regular expression log_file->write_header("t_user::parse_num_conversion", LOG_NORMAL, LOG_WARNING); @@ -2832,7 +2832,7 @@ bool t_user::write_config(const string &filename, string &error_msg) { i != number_conversions.end(); i++) { config << FLD_NUMBER_CONVERSION << '='; - config << escape(i->re, ','); + config << escape(i->re.str(), ','); config << ','; config << escape(i->fmt, ','); config << endl; @@ -3101,10 +3101,10 @@ string t_user::convert_number(const string &number, const list<t_number_conversi for (list<t_number_conversion>::const_iterator i = l.begin(); i != l.end(); i++) { - std::smatch m; + boost::smatch m; try { - if (std::regex_match(number, m, std::regex(i->re))) { + if (boost::regex_match(number, m, i->re)) { string result = m.format(i->fmt); log_file->write_header("t_user::convert_number", diff --git a/src/user.h b/src/user.h index 2e9c2ca9b2a6..f78652d4a35b 100644 --- a/src/user.h +++ b/src/user.h @@ -30,7 +30,7 @@ #include "audio/audio_codecs.h" #include "sockets/url.h" #include "threads/mutex.h" -#include <regex> +#include "boost/regex.hpp" // Forward declaration class t_request; @@ -91,10 +91,10 @@ enum t_g726_packing { }; struct t_number_conversion { - string re; - string fmt; + boost::regex re; + string fmt; - string str(void) const { return re + " --> " + fmt; } + string str(void) const { return re.str() + " --> " + fmt; } }; -- 2.4.5
