Date: Thursday, December 10, 2020 @ 13:25:56 Author: arojas Revision: 403401
archrelease: copy trunk to testing-x86_64 Added: kopete/repos/testing-x86_64/ kopete/repos/testing-x86_64/PKGBUILD (from rev 403400, kopete/trunk/PKGBUILD) kopete/repos/testing-x86_64/kopete-mediastreamer-4.3.patch (from rev 403400, kopete/trunk/kopete-mediastreamer-4.3.patch) kopete/repos/testing-x86_64/kopete-mediastreamer2.14.patch (from rev 403400, kopete/trunk/kopete-mediastreamer2.14.patch) kopete/repos/testing-x86_64/kopete-openssl-1.1.patch (from rev 403400, kopete/trunk/kopete-openssl-1.1.patch) kopete/repos/testing-x86_64/kopete-srtp2.patch (from rev 403400, kopete/trunk/kopete-srtp2.patch) --------------------------------+ PKGBUILD | 47 +++++ kopete-mediastreamer-4.3.patch | 84 ++++++++++ kopete-mediastreamer2.14.patch | 281 +++++++++++++++++++++++++++++++++++ kopete-openssl-1.1.patch | 307 +++++++++++++++++++++++++++++++++++++++ kopete-srtp2.patch | 154 +++++++++++++++++++ 5 files changed, 873 insertions(+) Copied: kopete/repos/testing-x86_64/PKGBUILD (from rev 403400, kopete/trunk/PKGBUILD) =================================================================== --- testing-x86_64/PKGBUILD (rev 0) +++ testing-x86_64/PKGBUILD 2020-12-10 13:25:56 UTC (rev 403401) @@ -0,0 +1,47 @@ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Maintainer: Antonio Rojas <aro...@archlinux.org> +# Contributor: Andrea Scarpino <and...@archlinux.org> + +pkgname=kopete +pkgver=20.12.0 +pkgrel=1 +pkgdesc='Instant Messenger' +url='https://kde.org/applications/internet/kopete/' +arch=(x86_64) +license=(GPL LGPL FDL) +groups=(kde-applications kde-network) +depends=(knotifyconfig kcmutils ktexteditor kcontacts kidentitymanagement libkleo qca kdelibs4support khtml + libidn libotr) +makedepends=(extra-cmake-modules mediastreamer libgadu jsoncpp kdoctools kdesignerplugin kdnssd kinit) +optdepends=('mediastreamer: jingle support' 'libgadu: Gadu-Gadu protocol' 'kdnssd: bonjour protocol') +source=("https://download.kde.org/stable/release-service/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig} + kopete-mediastreamer2.14.patch kopete-srtp2.patch kopete-openssl-1.1.patch kopete-mediastreamer-4.3.patch) +sha256sums=('f6d3daf864004b5739c967c49c30bef1ca8fc5b266977705379499a1b2d7feda' + 'SKIP' + '8b8e7a5d9f17fafdddb402fab22b0b8d9963039ea8ea9fa749cad67aeeb879ac' + 'ceed663f7007654d186d918cf7a0742972ed5bd319879021e9ba80e395177700' + 'a12ea422e5162ef11274a98fd53658d6e780cafbe2e0fac70c8bc7d3291fef8b' + '7ff38588f25bc05eae8ba20d9624536b33addf26b74e8c64ac036291f98f2bc2') +validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aa...@kde.org> + F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cf...@kde.org> + +prepare() { +# fix build with mediastreamer 2.14 https://phabricator.kde.org/D15956 + patch -d $pkgname-$pkgver -p1 -i ../kopete-mediastreamer2.14.patch +# Detect mediastreamer 4.3 + patch -d $pkgname-$pkgver -p1 -i ../kopete-mediastreamer-4.3.patch +# fix build with OpenSSL 1.1 (Fedora patch) + patch -d $pkgname-$pkgver -p1 -i ../kopete-openssl-1.1.patch +# support SRTP2 + patch -d $pkgname-$pkgver -p1 -i ../kopete-srtp2.patch +} + +build() { + cmake -B build -S $pkgname-$pkgver \ + -DBUILD_TESTING=OFF + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build +} Copied: kopete/repos/testing-x86_64/kopete-mediastreamer-4.3.patch (from rev 403400, kopete/trunk/kopete-mediastreamer-4.3.patch) =================================================================== --- testing-x86_64/kopete-mediastreamer-4.3.patch (rev 0) +++ testing-x86_64/kopete-mediastreamer-4.3.patch 2020-12-10 13:25:56 UTC (rev 403401) @@ -0,0 +1,84 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 55556be4a..8e63c2cee 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -92,8 +92,8 @@ set_package_properties(Libgadu PROPERTIES DESCRIPTION "A library providing suppo + find_package(LibMeanwhile QUIET) + set_package_properties(LibMeanwhile PROPERTIES DESCRIPTION "A library for protocol support for connection to sametime servers" URL "http://meanwhile.sourceforge.net/" TYPE OPTIONAL PURPOSE "Required for the meanwhile protocol") + +-find_package(LiboRTP QUIET) +-set_package_properties(LiboRTP PROPERTIES DESCRIPTION "oRTP provides an API to send rtp packets" URL "http://www.linphone.org/index.php/eng/code_review/ortp/" TYPE OPTIONAL PURPOSE "Required for the Jabber protocol with libjingle support") ++find_package(ortp QUIET) ++set_package_properties(ortp PROPERTIES DESCRIPTION "oRTP provides an API to send rtp packets" URL "http://www.linphone.org/index.php/eng/code_review/ortp/" TYPE OPTIONAL PURPOSE "Required for the Jabber protocol with libjingle support") + + find_package(LibOTR QUIET) + set_package_properties(LibOTR PROPERTIES DESCRIPTION "Library to encrypt messages with off-the-record encryption" URL "http://www.cypherpunks.ca/otr/" TYPE OPTIONAL PURPOSE "Required for the OTR plugin") +@@ -107,8 +107,8 @@ set_package_properties(LibXml2 PROPERTIES DESCRIPTION "Libraries used to develop + find_package(LibXslt QUIET) + set_package_properties(LibXslt PROPERTIES DESCRIPTION "A library to transform XML files into other XML files" URL "http://www.xmlsoft.org/XSLT/" TYPE OPTIONAL PURPOSE "Required for the Webpresence plugin") + +-find_package(Mediastreamer QUIET) +-set_package_properties(Mediastreamer PROPERTIES DESCRIPTION "A streaming enginer specialized for voice/video telephony applications" URL "http://www.linphone.org/index.php/eng/code_review/mediastreamer2/" TYPE OPTIONAL PURPOSE "Required for the Jabber protocol with libjingle support") ++find_package(Mediastreamer2 QUIET) ++set_package_properties(Mediastreamer2 PROPERTIES DESCRIPTION "A streaming enginer specialized for voice/video telephony applications" URL "http://www.linphone.org/index.php/eng/code_review/mediastreamer2/" TYPE OPTIONAL PURPOSE "Required for the Jabber protocol with libjingle support") + + find_package(OpenSSL QUIET) + set_package_properties(OpenSSL PROPERTIES DESCRIPTION "OpenSSL implementation of SSL" URL "https://www.openssl.org/" TYPE OPTIONAL PURPOSE "Required for the Jabber protocol with libjingle support") +diff --git a/protocols/CMakeLists.txt b/protocols/CMakeLists.txt +index 89d36a4e4..5f13ff9d9 100644 +--- a/protocols/CMakeLists.txt ++++ b/protocols/CMakeLists.txt +@@ -22,7 +22,7 @@ option(WITH_skype "Enable Kopete Skype protocol" ON) + set(BUILD_JINGLE FALSE) + + if(OPENSSL_FOUND OR WIN32) +- if(EXPAT_FOUND AND LIBORTP_FOUND AND SRTP_FOUND AND JSONCPP_FOUND AND MEDIASTREAMER_FOUND AND WITH_libjingle) ++ if(EXPAT_FOUND AND ORTP_FOUND AND SRTP_FOUND AND JSONCPP_FOUND AND MEDIASTREAMER2_FOUND AND WITH_libjingle) + message(STATUS "Building jabber libjingle support") + set(BUILD_LIBJINGLE TRUE) + else() +diff --git a/protocols/jabber/libjingle/CMakeLists.txt b/protocols/jabber/libjingle/CMakeLists.txt +index af7c1c3af..de7596615 100644 +--- a/protocols/jabber/libjingle/CMakeLists.txt ++++ b/protocols/jabber/libjingle/CMakeLists.txt +@@ -286,8 +286,8 @@ set ( call_LIBS + ${SRTP_LIBRARY} + ${JSONCPP_LIBRARY} + ${EXPAT_LIBRARY} +- ${MEDIASTREAMER_LIBRARIES} +- ${LIBORTP_LIBRARY} ++ ${MEDIASTREAMER2_LIBRARIES} ++ ${ORTP_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ${CMAKE_DL_LIBS} + ) +diff --git a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc +index bd11027e0..6f9e05a0a 100644 +--- a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc ++++ b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc +@@ -34,11 +34,9 @@ + #ifdef HAVE_LINPHONE + + // LinphoneMediaEngine is a Linphone implementation of MediaEngine +-extern "C" { + #include <mediastreamer2/mediastream.h> + #include <mediastreamer2/mssndcard.h> + #include <mediastreamer2/msfilter.h> +-} + + #include "talk/session/phone/linphonemediaengine.h" + +diff --git a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h +index 6105ab8cb..f5b5c3b14 100644 +--- a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h ++++ b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h +@@ -35,9 +35,7 @@ + #include <string> + #include <vector> + +-extern "C" { + #include <mediastreamer2/mediastream.h> +-} + + #include "talk/base/scoped_ptr.h" + #include "talk/session/phone/codec.h" Copied: kopete/repos/testing-x86_64/kopete-mediastreamer2.14.patch (from rev 403400, kopete/trunk/kopete-mediastreamer2.14.patch) =================================================================== --- testing-x86_64/kopete-mediastreamer2.14.patch (rev 0) +++ testing-x86_64/kopete-mediastreamer2.14.patch 2020-12-10 13:25:56 UTC (rev 403401) @@ -0,0 +1,281 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -34,6 +34,7 @@ + + find_package(KF5Contacts ${KCONTACTS_LIB_VERSION} CONFIG REQUIRED) + find_package(KF5IdentityManagement ${KCONTACTS_LIB_VERSION} CONFIG REQUIRED) ++find_package(Threads) + + include(KDEInstallDirs) + include(KDECompilerSettings NO_POLICY_SCOPE) +diff --git a/cmake/modules/FindLiboRTP.cmake b/cmake/modules/FindLiboRTP.cmake +--- a/cmake/modules/FindLiboRTP.cmake ++++ b/cmake/modules/FindLiboRTP.cmake +@@ -11,7 +11,7 @@ + + SET( LIBORTP_FOUND FALSE ) + +-pkg_check_modules(ortp ortp) ++pkg_check_modules(ORTP ortp) + + FIND_PATH( LIBORTP_INCLUDE_DIR + ortp/ortp.h +@@ -40,7 +40,13 @@ + if ( run_result EQUAL 0 ) + # Version OK + SET( LIBORTP_FOUND TRUE ) +- MESSAGE( STATUS "Found libortp: ${LIBORTP_LIBRARY}" ) ++ MESSAGE( STATUS "Found libortp: ${LIBORTP_LIBRARY} ${ORTP_VERSION}" ) ++ IF (ORTP_VERSION VERSION_LESS 1.0.1) ++ SET(ORTP_LESS_1_0_1 TRUE) ++ ELSE (ORTP_VERSION VERSION_LESS 1.0.1) ++ SET(ORTP_LESS_1_0_1 FALSE) ++ ENDIF (ORTP_VERSION VERSION_LESS 1.0.1) ++ + endif ( run_result EQUAL 0 ) + endif( compile_result ) + ENDIF( LIBORTP_INCLUDE_DIR AND LIBORTP_LIBRARY ) +diff --git a/cmake/modules/FindMediastreamer.cmake b/cmake/modules/FindMediastreamer.cmake +--- a/cmake/modules/FindMediastreamer.cmake ++++ b/cmake/modules/FindMediastreamer.cmake +@@ -20,17 +20,25 @@ + + IF (MEDIASTREAMER_FOUND) + IF (NOT MEDIASTREAMER_FIND_QUIETLY) ++ + MESSAGE(STATUS "Found Mediastreamer: ${MEDIASTREAMER_LIBRARIES} (version: ${MEDIASTREAMER_VERSION})") ++ ++ SET(MEDIASTREAMER_LESS_2_9 FALSE) ++ SET(MEDIASTREAMER_LESS_2_11 FALSE) ++ SET(MEDIASTREAMER_LESS_2_14 FALSE) ++ + IF (MEDIASTREAMER_VERSION VERSION_LESS 2.9) + SET(MEDIASTREAMER_LESS_2_9 TRUE) +- SET(MEDIASTREAMER_LESS_2_11 TRUE) +- ELSEIF (MEDIASTREAMER_VERSION VERSION_LESS 2.11) +- SET(MEDIASTREAMER_LESS_2_9 FALSE) +- SET(MEDIASTREAMER_LESS_2_11 TRUE) +- ELSE (MEDIASTREAMER_VERSION VERSION_LESS 2.9) +- SET(MEDIASTREAMER_LESS_2_9 FALSE) +- SET(MEDIASTREAMER_LESS_2_11 FALSE) + ENDIF (MEDIASTREAMER_VERSION VERSION_LESS 2.9) ++ ++ IF (MEDIASTREAMER_VERSION VERSION_LESS 2.11) ++ SET(MEDIASTREAMER_LESS_2_11 TRUE) ++ ENDIF (MEDIASTREAMER_VERSION VERSION_LESS 2.11) ++ ++ IF (MEDIASTREAMER_VERSION VERSION_LESS 2.14) ++ SET(MEDIASTREAMER_LESS_2_14 TRUE) ++ ENDIF (MEDIASTREAMER_VERSION VERSION_LESS 2.14) ++ + ENDIF (NOT MEDIASTREAMER_FIND_QUIETLY) + ELSE (MEDIASTREAMER_FOUND) + IF (MEDIASTREAMER_FIND_REQUIRED) +diff --git a/protocols/jabber/libjingle/CMakeLists.txt b/protocols/jabber/libjingle/CMakeLists.txt +--- a/protocols/jabber/libjingle/CMakeLists.txt ++++ b/protocols/jabber/libjingle/CMakeLists.txt +@@ -51,6 +51,10 @@ + add_definitions ( -DMEDIASTREAMER_LESS_2_11 ) + endif ( MEDIASTREAMER_LESS_2_11 ) + ++if ( MEDIASTREAMER_LESS_2_14 ) ++ add_definitions ( -DMEDIASTREAMER_LESS_2_14 ) ++endif ( MEDIASTREAMER_LESS_2_14 ) ++ + if ( CMAKE_BUILD_TYPE STREQUAL "Debug" ) + add_definitions ( -D_DEBUG ) + endif ( CMAKE_BUILD_TYPE STREQUAL "Debug" ) +@@ -284,6 +288,7 @@ + ${EXPAT_LIBRARY} + ${MEDIASTREAMER_LIBRARIES} + ${LIBORTP_LIBRARY} ++ ${CMAKE_THREAD_LIBS_INIT} + ${CMAKE_DL_LIBS} + ) + +diff --git a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h +--- a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h ++++ b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.h +@@ -53,7 +53,11 @@ + class LinphoneMediaEngine : public MediaEngineInterface { + public: + LinphoneMediaEngine(const std::string& ringWav, const std::string& callWav); ++#ifdef MEDIASTREAMER_LESS_2_14 + virtual ~LinphoneMediaEngine() {} ++#else ++ ~LinphoneMediaEngine(); ++#endif + + // Implement pure virtual methods of MediaEngine. + virtual bool Init() { return true; } +@@ -97,6 +101,10 @@ + bool have_speex; + bool have_gsm; + ++#ifndef MEDIASTREAMER_LESS_2_14 ++ MSFactory *factory; ++#endif ++ + private: + std::vector<AudioCodec> voice_codecs_; + std::vector<VideoCodec> video_codecs_; +@@ -110,7 +118,11 @@ + class LinphoneVoiceChannel : public VoiceMediaChannel { + public: + LinphoneVoiceChannel(LinphoneMediaEngine *eng); ++#ifdef MEDIASTREAMER_LESS_2_14 + virtual ~LinphoneVoiceChannel(); ++#else ++ ~LinphoneVoiceChannel(); ++#endif + + // Implement pure virtual methods of VoiceMediaChannel. + virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs); +diff --git a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc +--- a/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc ++++ b/protocols/jabber/libjingle/talk/session/phone/linphonemediaengine.cc +@@ -60,18 +60,34 @@ + /////////////////////////////////////////////////////////////////////////// + LinphoneMediaEngine::LinphoneMediaEngine(const std::string& ringWav, const std::string& callWav) : ring_wav_(ringWav), call_wav_(callWav) { + ortp_init(); ++#ifdef MEDIASTREAMER_LESS_2_14 + ms_init(); ++#else ++ factory = ms_factory_new(); ++ ms_factory_init_voip(factory); ++ ms_factory_init_plugins(factory); ++#endif + + #ifndef WIN32 + char * path = strdup(MSILBC_LIBRARY); + char * dirc = dirname(path); ++#ifdef MEDIASTREAMER_LESS_2_14 + ms_load_plugins(dirc); ++#else ++ ms_factory_load_plugins(factory, dirc); ++#endif + free(path); + #endif + ++#ifdef MEDIASTREAMER_LESS_2_14 + have_ilbc = ms_filter_codec_supported("iLBC"); + have_speex = ms_filter_codec_supported("speex"); + have_gsm = ms_filter_codec_supported("gsm"); ++#else ++ have_ilbc = ms_factory_codec_supported(factory, "iLBC"); ++ have_speex = ms_factory_codec_supported(factory, "speex"); ++ have_gsm = ms_factory_codec_supported(factory, "gsm"); ++#endif + + if (have_speex) { + voice_codecs_.push_back(AudioCodec(110, payload_type_speex_wb.mime_type, payload_type_speex_wb.clock_rate, 0, 1, 8)); +@@ -88,6 +104,14 @@ + voice_codecs_.push_back(AudioCodec(101, payload_type_telephone_event.mime_type, payload_type_telephone_event.clock_rate, 0, 1, 1)); + } + ++#ifndef MEDIASTREAMER_LESS_2_14 ++LinphoneMediaEngine::~LinphoneMediaEngine() { ++ ms_factory_uninit_plugins(factory); ++ ms_factory_uninit_voip(factory); ++ ms_factory_destroy(factory); ++} ++#endif ++ + void LinphoneMediaEngine::Terminate() { + fflush(stdout); + } +@@ -149,15 +173,25 @@ + playport2 = PORT_UNUSED; + + #ifdef _DEBUG ++#ifdef MEDIASTREAMER_LESS_2_14 + ortp_set_log_level_mask(ORTP_DEBUG|ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); + #else ++ ortp_set_log_level_mask(ORTP_LOG_DOMAIN, ORTP_DEBUG|ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); ++#endif ++#else ++#ifdef MEDIASTREAMER_LESS_2_14 + ortp_set_log_level_mask(ORTP_FATAL); ++#else ++ ortp_set_log_level_mask(ORTP_LOG_DOMAIN, ORTP_FATAL); ++#endif + #endif + + #ifdef MEDIASTREAMER_LESS_2_9 + audio_stream_ = audio_stream_new(-1, 0); /* -1 means that function will choose some free port */ +-#else ++#elif MEDIASTREAMER_LESS_2_14 + audio_stream_ = audio_stream_new(-1, -1, 0); /* -1 means that function will choose some free port */ ++#else ++ audio_stream_ = audio_stream_new(engine_->factory, -1, -1, 0); /* -1 means that function will choose some free port */ + #endif + + } +@@ -272,11 +306,22 @@ + { + StopRing(); + ++#ifdef MEDIASTREAMER_LESS_2_14 ++ MSSndCardManager *snd_manager = ms_snd_card_manager_get(); + MSSndCard *playcard = ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get()); ++#else ++ MSSndCardManager *snd_manager = ms_factory_get_snd_card_manager(engine_->factory); ++ MSSndCard *playcard = ms_snd_card_manager_get_default_playback_card(snd_manager); ++#endif ++ + if (!playcard) + return false; + ++#ifdef MEDIASTREAMER_LESS_2_14 + MSSndCard *captcard = ms_snd_card_manager_get_default_capture_card(ms_snd_card_manager_get()); ++#else ++ MSSndCard *captcard = ms_snd_card_manager_get_default_capture_card(snd_manager); ++#endif + if (!captcard) + return false; + +@@ -333,8 +378,18 @@ + + void LinphoneVoiceChannel::StartRing(bool bIncomingCall) + { ++#ifdef MEDIASTREAMER_LESS_2_14 ++ MSSndCardManager *snd_manager = ms_snd_card_manager_get(); ++#else ++ MSSndCardManager *snd_manager = ms_factory_get_snd_card_manager(engine_->factory); ++#endif ++ + MSSndCard *sndcard = NULL; ++#ifdef MEDIASTREAMER_LESS_2_14 + sndcard=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()); ++#else ++ sndcard=ms_snd_card_manager_get_default_card(snd_manager); ++#endif + if (sndcard) + { + if (bIncomingCall) +@@ -342,7 +397,11 @@ + if (engine_->GetRingWav().size() > 0) + { + LOG(LS_VERBOSE) << "incoming ring. sound file: " << engine_->GetRingWav().c_str() << "\n"; ++#ifdef MEDIASTREAMER_LESS_2_14 + ring_stream_ = ring_start (engine_->GetRingWav().c_str(), 1, sndcard); ++#else ++ ring_stream_ = ring_start (engine_->factory, engine_->GetRingWav().c_str(), 1, sndcard); ++#endif + } + } + else +@@ -350,7 +409,11 @@ + if (engine_->GetCallWav().size() > 0) + { + LOG(LS_VERBOSE) << "outgoing ring. sound file: " << engine_->GetCallWav().c_str() << "\n"; ++#ifdef MEDIASTREAMER_LESS_2_14 + ring_stream_ = ring_start (engine_->GetCallWav().c_str(), 1, sndcard); ++#else ++ ring_stream_ = ring_start (engine_->factory, engine_->GetCallWav().c_str(), 1, sndcard); ++#endif + } + } + } + Copied: kopete/repos/testing-x86_64/kopete-openssl-1.1.patch (from rev 403400, kopete/trunk/kopete-openssl-1.1.patch) =================================================================== --- testing-x86_64/kopete-openssl-1.1.patch (rev 0) +++ testing-x86_64/kopete-openssl-1.1.patch 2020-12-10 13:25:56 UTC (rev 403401) @@ -0,0 +1,307 @@ +diff -ur kopete-17.08.3/protocols/jabber/libjingle/talk/base/openssladapter.cc kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/openssladapter.cc +--- kopete-17.08.3/protocols/jabber/libjingle/talk/base/openssladapter.cc 2017-09-30 12:08:16.000000000 +0200 ++++ kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/openssladapter.cc 2018-01-05 22:49:27.805070408 +0100 +@@ -84,6 +84,7 @@ + static int socket_new(BIO* h); + static int socket_free(BIO* data); + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static BIO_METHOD methods_socket = { + BIO_TYPE_BIO, + "socket", +@@ -98,16 +99,40 @@ + }; + + BIO_METHOD* BIO_s_socket2() { return(&methods_socket); } ++#else ++static BIO_METHOD *methods_socket = NULL; ++ ++static const BIO_METHOD * BIO_s_socket2(void) { ++ if (methods_socket == NULL) { ++ methods_socket = BIO_meth_new (BIO_TYPE_BIO | BIO_get_new_index (), "socket"); ++ if (methods_socket == NULL || ++ BIO_meth_set_write (methods_socket, socket_write) || ++ BIO_meth_set_read (methods_socket, socket_read) || ++ BIO_meth_set_puts (methods_socket, socket_puts) || ++ BIO_meth_set_gets (methods_socket, 0) || ++ BIO_meth_set_ctrl (methods_socket, socket_ctrl) || ++ BIO_meth_set_create (methods_socket, socket_new) || ++ BIO_meth_set_destroy (methods_socket, socket_free)) ++ return NULL; ++ } ++ return methods_socket; ++} ++#endif + + BIO* BIO_new_socket(talk_base::AsyncSocket* socket) { ++ const BIO_METHOD *socket2 = BIO_s_socket2(); ++ if (socket2 == NULL) { ++ return NULL; ++ } +- BIO* ret = BIO_new(BIO_s_socket2()); ++ BIO* ret = BIO_new(socket2); + if (ret == NULL) { + return NULL; + } +- ret->ptr = socket; ++ BIO_set_data(ret, socket); + return ret; + } + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static int socket_new(BIO* b) { + b->shutdown = 0; + b->init = 1; +@@ -115,6 +136,14 @@ + b->ptr = 0; + return 1; + } ++#else ++static int socket_new(BIO* b) { ++ BIO_set_shutdown(b, 0); ++ BIO_set_init(b, 1); ++ BIO_set_data(b, 0); ++ return 1; ++} ++#endif + + static int socket_free(BIO* b) { + if (b == NULL) +@@ -125,13 +154,11 @@ + static int socket_read(BIO* b, char* out, int outl) { + if (!out) + return -1; +- talk_base::AsyncSocket* socket = static_cast<talk_base::AsyncSocket*>(b->ptr); ++ talk_base::AsyncSocket* socket = static_cast<talk_base::AsyncSocket*>(BIO_get_data(b)); + BIO_clear_retry_flags(b); + int result = socket->Recv(out, outl); + if (result > 0) { + return result; +- } else if (result == 0) { +- b->num = 1; + } else if (socket->IsBlocking()) { + BIO_set_retry_read(b); + } +@@ -141,7 +168,7 @@ + static int socket_write(BIO* b, const char* in, int inl) { + if (!in) + return -1; +- talk_base::AsyncSocket* socket = static_cast<talk_base::AsyncSocket*>(b->ptr); ++ talk_base::AsyncSocket* socket = static_cast<talk_base::AsyncSocket*>(BIO_get_data(b)); + BIO_clear_retry_flags(b); + int result = socket->Send(in, inl); + if (result > 0) { +@@ -164,7 +191,6 @@ + case BIO_CTRL_RESET: + return 0; + case BIO_CTRL_EOF: +- return b->num; + case BIO_CTRL_WPENDING: + case BIO_CTRL_PENDING: + return 0; +@@ -696,7 +722,9 @@ + // We assign this to a local variable, instead of passing the address + // directly to ASN1_item_d2i. + // See http://readlist.com/lists/openssl.org/openssl-users/0/4761.html. +- unsigned char* ext_value_data = extension->value->data; ++ ASN1_OCTET_STRING *extension_data = X509_EXTENSION_get_data(extension); ++ unsigned char* ext_value_data = extension_data->data; ++ long length = extension_data->length; + + #if OPENSSL_VERSION_NUMBER >= 0x0090800fL + const unsigned char **ext_value_data_ptr = +@@ -707,10 +735,10 @@ + + if (meth->it) { + ext_str = ASN1_item_d2i(NULL, ext_value_data_ptr, +- extension->value->length, ++ length, + ASN1_ITEM_ptr(meth->it)); + } else { +- ext_str = meth->d2i(NULL, ext_value_data_ptr, extension->value->length); ++ ext_str = meth->d2i(NULL, ext_value_data_ptr, length); + } + + STACK_OF(CONF_VALUE)* value = meth->i2v(meth, ext_str, NULL); +diff -ur kopete-17.08.3/protocols/jabber/libjingle/talk/base/openssldigest.cc kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/openssldigest.cc +--- kopete-17.08.3/protocols/jabber/libjingle/talk/base/openssldigest.cc 2017-09-30 12:08:16.000000000 +0200 ++++ kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/openssldigest.cc 2018-01-05 22:49:27.869069361 +0100 +@@ -32,16 +32,16 @@ + namespace talk_base { + + OpenSSLDigest::OpenSSLDigest(const std::string& algorithm) { +- EVP_MD_CTX_init(&ctx_); ++ EVP_MD_CTX_init(ctx_); + if (GetDigestEVP(algorithm, &md_)) { +- EVP_DigestInit_ex(&ctx_, md_, NULL); ++ EVP_DigestInit_ex(ctx_, md_, NULL); + } else { + md_ = NULL; + } + } + + OpenSSLDigest::~OpenSSLDigest() { +- EVP_MD_CTX_cleanup(&ctx_); ++ EVP_MD_CTX_destroy(ctx_); + } + + size_t OpenSSLDigest::Size() const { +@@ -55,7 +55,7 @@ + if (!md_) { + return; + } +- EVP_DigestUpdate(&ctx_, buf, len); ++ EVP_DigestUpdate(ctx_, buf, len); + } + + size_t OpenSSLDigest::Finish(void* buf, size_t len) { +@@ -63,8 +63,8 @@ + return 0; + } + unsigned int md_len; +- EVP_DigestFinal_ex(&ctx_, static_cast<unsigned char*>(buf), &md_len); +- EVP_DigestInit_ex(&ctx_, md_, NULL); // prepare for future Update()s ++ EVP_DigestFinal_ex(ctx_, static_cast<unsigned char*>(buf), &md_len); ++ EVP_DigestInit_ex(ctx_, md_, NULL); // prepare for future Update()s + ASSERT(md_len == Size()); + return md_len; + } +diff -ur kopete-17.08.3/protocols/jabber/libjingle/talk/base/openssldigest.h kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/openssldigest.h +--- kopete-17.08.3/protocols/jabber/libjingle/talk/base/openssldigest.h 2017-09-30 12:08:16.000000000 +0200 ++++ kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/openssldigest.h 2018-01-05 22:49:27.869069361 +0100 +@@ -55,7 +55,7 @@ + size_t* len); + + private: +- EVP_MD_CTX ctx_; ++ EVP_MD_CTX* ctx_ = EVP_MD_CTX_create(); + const EVP_MD* md_; + }; + +diff -ur kopete-17.08.3/protocols/jabber/libjingle/talk/base/opensslidentity.cc kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/opensslidentity.cc +--- kopete-17.08.3/protocols/jabber/libjingle/talk/base/opensslidentity.cc 2017-09-30 12:08:16.000000000 +0200 ++++ kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/opensslidentity.cc 2018-01-05 22:49:27.867069394 +0100 +@@ -169,7 +169,12 @@ + } + + void OpenSSLKeyPair::AddReference() { ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + CRYPTO_add(&pkey_->references, 1, CRYPTO_LOCK_EVP_PKEY); ++#else ++ EVP_PKEY_up_ref(pkey_); ++#endif ++ + } + + #ifdef _DEBUG +@@ -275,7 +280,11 @@ + } + + void OpenSSLCertificate::AddReference() { ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + CRYPTO_add(&x509_->references, 1, CRYPTO_LOCK_X509); ++#else ++ X509_up_ref(x509_); ++#endif + } + + OpenSSLIdentity* OpenSSLIdentity::Generate(const std::string& common_name) { +diff -ur kopete-17.08.3/protocols/jabber/libjingle/talk/base/opensslstreamadapter.cc kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/opensslstreamadapter.cc +--- kopete-17.08.3/protocols/jabber/libjingle/talk/base/opensslstreamadapter.cc 2017-09-30 12:08:16.000000000 +0200 ++++ kopete-17.08.3-openssl-1.1/protocols/jabber/libjingle/talk/base/opensslstreamadapter.cc 2018-01-05 22:49:27.868069378 +0100 +@@ -87,6 +87,7 @@ + static int stream_new(BIO* h); + static int stream_free(BIO* data); + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static BIO_METHOD methods_stream = { + BIO_TYPE_BIO, + "stream", +@@ -101,17 +102,37 @@ + }; + + static BIO_METHOD* BIO_s_stream() { return(&methods_stream); } ++#else ++static BIO_METHOD *methods_stream = NULL; ++ ++static const BIO_METHOD * BIO_s_stream(void) { ++ if (methods_stream == NULL) { ++ methods_stream = BIO_meth_new (BIO_TYPE_BIO | BIO_get_new_index (), "stream"); ++ if (methods_stream == NULL || ++ BIO_meth_set_write (methods_stream, stream_write) || ++ BIO_meth_set_read (methods_stream, stream_read) || ++ BIO_meth_set_puts (methods_stream, stream_puts) || ++ BIO_meth_set_gets (methods_stream, 0) || ++ BIO_meth_set_ctrl (methods_stream, stream_ctrl) || ++ BIO_meth_set_create (methods_stream, stream_new) || ++ BIO_meth_set_destroy (methods_stream, stream_free)) ++ return NULL; ++ } ++ return methods_stream; ++} ++#endif + + static BIO* BIO_new_stream(StreamInterface* stream) { + BIO* ret = BIO_new(BIO_s_stream()); + if (ret == NULL) + return NULL; +- ret->ptr = stream; ++ BIO_set_data(ret, stream); + return ret; + } + + // bio methods return 1 (or at least non-zero) on success and 0 on failure. + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static int stream_new(BIO* b) { + b->shutdown = 0; + b->init = 1; +@@ -119,6 +140,14 @@ + b->ptr = 0; + return 1; + } ++#else ++static int stream_new(BIO* b) { ++ BIO_set_shutdown(b, 0); ++ BIO_set_init(b, 1); ++ BIO_set_data(b, 0); ++ return 1; ++} ++#endif + + static int stream_free(BIO* b) { + if (b == NULL) +@@ -129,15 +158,13 @@ + static int stream_read(BIO* b, char* out, int outl) { + if (!out) + return -1; +- StreamInterface* stream = static_cast<StreamInterface*>(b->ptr); ++ StreamInterface* stream = static_cast<StreamInterface*>(BIO_get_data(b)); + BIO_clear_retry_flags(b); + size_t read; + int error; + StreamResult result = stream->Read(out, outl, &read, &error); + if (result == SR_SUCCESS) { + return read; +- } else if (result == SR_EOS) { +- b->num = 1; + } else if (result == SR_BLOCK) { + BIO_set_retry_read(b); + } +@@ -147,7 +174,7 @@ + static int stream_write(BIO* b, const char* in, int inl) { + if (!in) + return -1; +- StreamInterface* stream = static_cast<StreamInterface*>(b->ptr); ++ StreamInterface* stream = static_cast<StreamInterface*>(BIO_get_data(b)); + BIO_clear_retry_flags(b); + size_t written; + int error; +@@ -172,7 +199,6 @@ + case BIO_CTRL_RESET: + return 0; + case BIO_CTRL_EOF: +- return b->num; + case BIO_CTRL_WPENDING: + case BIO_CTRL_PENDING: + return 0; Copied: kopete/repos/testing-x86_64/kopete-srtp2.patch (from rev 403400, kopete/trunk/kopete-srtp2.patch) =================================================================== --- testing-x86_64/kopete-srtp2.patch (rev 0) +++ testing-x86_64/kopete-srtp2.patch 2020-12-10 13:25:56 UTC (rev 403401) @@ -0,0 +1,154 @@ +diff --git a/cmake/modules/FindSRTP.cmake b/cmake/modules/FindSRTP.cmake +index 4e8baa827..ce9033497 100644 +--- a/cmake/modules/FindSRTP.cmake ++++ b/cmake/modules/FindSRTP.cmake +@@ -11,8 +11,8 @@ include ( FindPackageHandleStandardArgs ) + if ( SRTP_INCLUDE_DIR AND SRTP_LIBRARY ) + set ( SRTP_FOUND true ) + else ( SRTP_INCLUDE_DIR AND SRTP_LIBRARY ) +- find_path ( SRTP_INCLUDE_DIR srtp.h PATH_SUFFIXES srtp ) +- find_library ( SRTP_LIBRARY NAMES srtp ) ++ find_path ( SRTP_INCLUDE_DIR srtp.h PATH_SUFFIXES srtp srtp2 ) ++ find_library ( SRTP_LIBRARY NAMES srtp srtp2 ) + + if ( SRTP_INCLUDE_DIR AND SRTP_LIBRARY ) + set ( SRTP_FOUND true ) +diff --git a/protocols/jabber/libjingle/talk/session/phone/srtpfilter.cc b/protocols/jabber/libjingle/talk/session/phone/srtpfilter.cc +index 7a1cb7866..f5363a36a 100644 +--- a/protocols/jabber/libjingle/talk/session/phone/srtpfilter.cc ++++ b/protocols/jabber/libjingle/talk/session/phone/srtpfilter.cc +@@ -416,7 +416,7 @@ bool SrtpSession::ProtectRtp(void* p, int in_len, int max_len, int* out_len) { + } + int seq_num; + GetRtpSeqNum(p, in_len, &seq_num); +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_WARNING) << "Failed to protect SRTP packet, seqnum=" + << seq_num << ", err=" << err << ", last seqnum=" + << last_send_seq_num_; +@@ -442,7 +442,7 @@ bool SrtpSession::ProtectRtcp(void* p, int in_len, int max_len, int* out_len) { + *out_len = in_len; + int err = srtp_protect_rtcp(session_, p, out_len); + srtp_stat_->AddProtectRtcpResult(err); +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_WARNING) << "Failed to protect SRTCP packet, err=" << err; + return false; + } +@@ -461,7 +461,7 @@ bool SrtpSession::UnprotectRtp(void* p, int in_len, int* out_len) { + if (GetRtpSsrc(p, in_len, &ssrc)) { + srtp_stat_->AddUnprotectRtpResult(ssrc, err); + } +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_WARNING) << "Failed to unprotect SRTP packet, err=" << err; + return false; + } +@@ -477,7 +477,7 @@ bool SrtpSession::UnprotectRtcp(void* p, int in_len, int* out_len) { + *out_len = in_len; + int err = srtp_unprotect_rtcp(session_, p, out_len); + srtp_stat_->AddUnprotectRtcpResult(err); +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_WARNING) << "Failed to unprotect SRTCP packet, err=" << err; + return false; + } +@@ -504,11 +504,11 @@ bool SrtpSession::SetKey(int type, const std::string& cs, + memset(&policy, 0, sizeof(policy)); + + if (cs == CS_AES_CM_128_HMAC_SHA1_80) { +- crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtp); +- crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtcp); ++ srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtp); ++ srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtcp); + } else if (cs == CS_AES_CM_128_HMAC_SHA1_32) { +- crypto_policy_set_aes_cm_128_hmac_sha1_32(&policy.rtp); // rtp is 32, +- crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtcp); // rtcp still 80 ++ srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(&policy.rtp); // rtp is 32, ++ srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(&policy.rtcp); // rtcp still 80 + } else { + LOG(LS_WARNING) << "Failed to create SRTP session: unsupported" + << " cipher_suite " << cs.c_str(); +@@ -520,7 +520,7 @@ bool SrtpSession::SetKey(int type, const std::string& cs, + return false; + } + +- policy.ssrc.type = static_cast<ssrc_type_t>(type); ++ policy.ssrc.type = static_cast<srtp_ssrc_type_t>(type); + policy.ssrc.value = 0; + policy.key = const_cast<uint8*>(key); + // TODO parse window size from WSH session-param +@@ -529,7 +529,7 @@ bool SrtpSession::SetKey(int type, const std::string& cs, + policy.next = NULL; + + int err = srtp_create(&session_, &policy); +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_ERROR) << "Failed to create SRTP session, err=" << err; + return false; + } +@@ -543,13 +543,13 @@ bool SrtpSession::Init() { + if (!inited_) { + int err; + err = srtp_init(); +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_ERROR) << "Failed to init SRTP, err=" << err; + return false; + } + + err = srtp_install_event_handler(&SrtpSession::HandleEventThunk); +- if (err != err_status_ok) { ++ if (err != srtp_err_status_ok) { + LOG(LS_ERROR) << "Failed to install SRTP event handler, err=" << err; + return false; + } +@@ -652,10 +652,10 @@ void SrtpStat::AddProtectRtpResult(uint32 ssrc, int result) { + key.ssrc = ssrc; + key.mode = SrtpFilter::PROTECT; + switch (result) { +- case err_status_ok: ++ case srtp_err_status_ok: + key.error = SrtpFilter::ERROR_NONE; + break; +- case err_status_auth_fail: ++ case srtp_err_status_auth_fail: + key.error = SrtpFilter::ERROR_AUTH; + break; + default: +@@ -669,14 +669,14 @@ void SrtpStat::AddUnprotectRtpResult(uint32 ssrc, int result) { + key.ssrc = ssrc; + key.mode = SrtpFilter::UNPROTECT; + switch (result) { +- case err_status_ok: ++ case srtp_err_status_ok: + key.error = SrtpFilter::ERROR_NONE; + break; +- case err_status_auth_fail: ++ case srtp_err_status_auth_fail: + key.error = SrtpFilter::ERROR_AUTH; + break; +- case err_status_replay_fail: +- case err_status_replay_old: ++ case srtp_err_status_replay_fail: ++ case srtp_err_status_replay_old: + key.error = SrtpFilter::ERROR_REPLAY; + break; + default: +diff --git a/protocols/jabber/libjingle/talk/session/phone/srtpfilter.h b/protocols/jabber/libjingle/talk/session/phone/srtpfilter.h +index 991d4bf42..ff4e5070f 100644 +--- a/protocols/jabber/libjingle/talk/session/phone/srtpfilter.h ++++ b/protocols/jabber/libjingle/talk/session/phone/srtpfilter.h +@@ -39,11 +39,7 @@ + #include "talk/session/phone/cryptoparams.h" + #include "talk/p2p/base/sessiondescription.h" + +-// Forward declaration to avoid pulling in libsrtp headers here +-struct srtp_event_data_t; +-struct srtp_ctx_t; +-typedef srtp_ctx_t* srtp_t; +-struct srtp_policy_t; ++#include "srtp2/srtp.h" + + namespace cricket { +