diff --git a/dev-libs/libQuotient/Manifest b/dev-libs/libQuotient/Manifest deleted file mode 100644 index 619348f..0000000 --- a/dev-libs/libQuotient/Manifest +++ /dev/null @@ -1,2 +0,0 @@ -DIST libQuotient-0.6.1.tar.gz 557477 BLAKE2B f0e90c0bbf2eccc93cbb9a4598368929ebe2e03aea9db3b4ea1782e41cd96ae9812b649c3d2f3f3e62f09d7266dd4c27c24d87163c0ae05c0d122e734e6f59e2 SHA512 17f6bac381d62e3975d6099a92a80c6855ba078947f9855960e7c963c05e094127eb926e922868456eb0694bd5eb1f4294bb12bfdea73db1724313359a330e2e -DIST libQuotient-0.6.3.tar.gz 559142 BLAKE2B 77ba0583a90e9d29d44ce9a70909d6b51462a1f16dbc2e9d321eb9d638329af41fe7b0c4f7569e5d46f3a9c12d32b1ef0b926c5e285bc3ed9b70ba6d4dbe8024 SHA512 a81d88b00edc2af8ad9a6a297f1d65ef5d96fb305f503b46f29381df1bb007b42e44b207fb649316c38c977a5b03c93f884407dccdc48ab066af6b004dd9a9d6 diff --git a/dev-libs/libQuotient/libQuotient-0.6.1.ebuild b/dev-libs/libQuotient/libQuotient-0.6.1.ebuild deleted file mode 100644 index c6c938e..0000000 --- a/dev-libs/libQuotient/libQuotient-0.6.1.ebuild +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -DESCRIPTION="A Qt5 library to write cross-platform clients for Matrix" -HOMEPAGE="https://github.com/qmatrixclient/libqmatrixclient" - -inherit cmake - -if [[ ${PV} == "9999" ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/quotient-im/"${PN}".git" -else - SRC_URI="https://github.com/quotient-im/libQuotient/archive/"${PV}".tar.gz -> "${P}".tar.gz" - KEYWORDS="~amd64" -fi - -LICENSE="GPL-3" -SLOT="0" - -RDEPEND="" -DEPEND=" - ${RDEPEND} - dev-qt/qtcore - dev-qt/qtmultimedia - !!dev-libs/libqmatrixclient -" - -S=""${WORKDIR}"/"${PN}"-"${PV}"" - -src_configure() { - local mycmakeargs=( - -DBUILD_SHARED_LIBS=ON - ) - cmake_src_configure -} diff --git a/net-im/spectral/spectral-854.ebuild b/net-im/spectral/spectral-854.ebuild index 5710d61..c7dcb0b 100644 --- a/net-im/spectral/spectral-854.ebuild +++ b/net-im/spectral/spectral-854.ebuild @@ -1,4 +1,4 @@ -# Copyright 2020 Gentoo Authors +# Copyright 2020-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 @@ -31,7 +31,7 @@ RDEPEND=" dev-qt/qtmultimedia[qml] dev-qt/qtwidgets >=dev-qt/qtquickcontrols2-5.12 - >=dev-libs/libQuotient-0.6.0 + >=net-libs/libquotient-0.6.0 dev-libs/libQtOlm dev-libs/qtkeychain || ( media-fonts/roboto media-fonts/noto ) diff --git a/net-im/spectral/spectral-9999.ebuild b/net-im/spectral/spectral-9999.ebuild index 554b1c5..6110e36 100644 --- a/net-im/spectral/spectral-9999.ebuild +++ b/net-im/spectral/spectral-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 2020 Gentoo Authors +# Copyright 2020-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 @@ -31,7 +31,7 @@ RDEPEND=" dev-qt/qtmultimedia[qml] dev-qt/qtwidgets >=dev-qt/qtquickcontrols2-5.12 - >=dev-libs/libQuotient-0.6_beta1 + >=net-libs/libquotient-0.6_beta1 dev-libs/libQtOlm dev-libs/qtkeychain || ( media-fonts/roboto media-fonts/noto ) diff --git a/net-libs/libquotient/Manifest b/net-libs/libquotient/Manifest new file mode 100644 index 0000000..eca3bed --- /dev/null +++ b/net-libs/libquotient/Manifest @@ -0,0 +1,2 @@ +DIST libquotient-0.6.3.tar.gz 559142 BLAKE2B 77ba0583a90e9d29d44ce9a70909d6b51462a1f16dbc2e9d321eb9d638329af41fe7b0c4f7569e5d46f3a9c12d32b1ef0b926c5e285bc3ed9b70ba6d4dbe8024 SHA512 a81d88b00edc2af8ad9a6a297f1d65ef5d96fb305f503b46f29381df1bb007b42e44b207fb649316c38c977a5b03c93f884407dccdc48ab066af6b004dd9a9d6 +DIST libquotient-0.6.4.tar.gz 559830 BLAKE2B 23a2d5bed5a5bcd30ffa00465291f5670d187d44991fe424bce5a2ce1ffc9d4fc09b0cc1e44e7b2b2470f82f6a3bcf4be2d6d9185d2952761a9a94d6f4fae2ce SHA512 6f505a697b6bd123004faaaae4ea6788ed985dafd965c5768cc838be98d6b27f65d5fb04c02d41c6a9ca2ce622acbd49264a9a14a99a087126d2852a926184ce diff --git a/net-libs/libquotient/files/libquotient-0.6.3-no-android.patch b/net-libs/libquotient/files/libquotient-0.6.3-no-android.patch new file mode 100644 index 0000000..5541f4d --- /dev/null +++ b/net-libs/libquotient/files/libquotient-0.6.3-no-android.patch @@ -0,0 +1,29 @@ +From d82cb1f43cab7976e25c6e9ff3e4ae17789ee11c Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Sun, 3 Jan 2021 15:18:01 +0100 +Subject: [PATCH] Install EXPORT_ANDROID_MK only if(ANDROID) + +Signed-off-by: Andreas Sturmlechner +--- + CMakeLists.txt | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2ee1cb4..eec27c8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -321,7 +321,10 @@ install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${ConfigFilesLocation} + ) +-install(EXPORT_ANDROID_MK ${PROJECT_NAME}Targets DESTINATION share/ndk-modules) ++ ++if (ANDROID) ++ install(EXPORT_ANDROID_MK ${PROJECT_NAME}Targets DESTINATION share/ndk-modules) ++endif () + + if (WIN32) + install(FILES mime/packages/freedesktop.org.xml DESTINATION mime/packages) +-- +2.30.0 + diff --git a/net-libs/libquotient/files/libquotient-0.6.3-no-tests.patch b/net-libs/libquotient/files/libquotient-0.6.3-no-tests.patch new file mode 100644 index 0000000..fb884e1 --- /dev/null +++ b/net-libs/libquotient/files/libquotient-0.6.3-no-tests.patch @@ -0,0 +1,42 @@ +From ff972d181f0f9e7bfa327c71450d55f951de27c1 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Sun, 3 Jan 2021 15:05:59 +0100 +Subject: [PATCH] Put Qt5Test dependency behind -DQuotient_INSTALL_TESTS + +Signed-off-by: Andreas Sturmlechner +--- + CMakeLists.txt | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2ee1cb4..2a0908d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -58,7 +58,7 @@ else() + endforeach () + endif() + +-find_package(Qt5 5.9 REQUIRED Network Gui Multimedia Test) ++find_package(Qt5 5.9 REQUIRED Network Gui Multimedia) + get_filename_component(Qt5_Prefix "${Qt5_DIR}/../../../.." ABSOLUTE) + + if (${PROJECT_NAME}_ENABLE_E2EE) +@@ -280,9 +280,12 @@ if (${PROJECT_NAME}_ENABLE_E2EE) + endif() + target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Network Qt5::Gui Qt5::Multimedia) + +-set(TEST_BINARY quotest) +-add_executable(${TEST_BINARY} ${tests_SRCS}) +-target_link_libraries(${TEST_BINARY} Qt5::Core Qt5::Test ${PROJECT_NAME}) ++if(${PROJECT_NAME}_INSTALL_TESTS) ++ find_package(Qt5Test) ++ set(TEST_BINARY quotest) ++ add_executable(${TEST_BINARY} ${tests_SRCS}) ++ target_link_libraries(${TEST_BINARY} Qt5::Core Qt5::Test ${PROJECT_NAME}) ++endif() + + configure_file(${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc @ONLY NEWLINE_STYLE UNIX) + +-- +2.30.0 + diff --git a/net-libs/libquotient/files/libquotient-0.6.3-use-after-free.patch b/net-libs/libquotient/files/libquotient-0.6.3-use-after-free.patch new file mode 100644 index 0000000..12046a1 --- /dev/null +++ b/net-libs/libquotient/files/libquotient-0.6.3-use-after-free.patch @@ -0,0 +1,92 @@ +From f286ef4c5b3c71510d6ef15e8cc12cada84f3682 Mon Sep 17 00:00:00 2001 +From: Nicolas Fella +Date: Sun, 27 Dec 2020 21:24:06 +0100 +Subject: [PATCH] Fix use-after-free of QNetworkReply in BaseJob + +Usually QNetworkAccessManager expects the user to delete the replies, but when the QNetworkAccessManager itself is deleted it deletes all pending replies (https://code.woboq.org/qt5/qtbase/src/network/access/qnetworkaccessmanager.cpp.html#529). + +This can lead to use-after-free crashes when d->reply is accessed. By putting the reply into a QPointer the exiting if(d->reply) checks can work properly. + +(cherry picked from commit 9d854e778d8d6ef8e03e1ea74fe958675b24fd45) +--- + lib/jobs/basejob.cpp | 33 +++++++++++++++++++-------------- + 1 file changed, 19 insertions(+), 14 deletions(-) + +diff --git a/lib/jobs/basejob.cpp b/lib/jobs/basejob.cpp +index 3fa1cd94..2ac942f5 100644 +--- a/lib/jobs/basejob.cpp ++++ b/lib/jobs/basejob.cpp +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -76,15 +77,6 @@ QDebug BaseJob::Status::dumpToLog(QDebug dbg) const + return dbg << ": " << message; + } + +-struct NetworkReplyDeleter : public QScopedPointerDeleteLater { +- static inline void cleanup(QNetworkReply* reply) +- { +- if (reply && reply->isRunning()) +- reply->abort(); +- QScopedPointerDeleteLater::cleanup(reply); +- } +-}; +- + template + constexpr auto make_array(Ts&&... items) + { +@@ -112,6 +104,16 @@ class BaseJob::Private { + retryTimer.setSingleShot(true); + } + ++ ~Private() ++ { ++ if (reply) { ++ if (reply->isRunning()) { ++ reply->abort(); ++ } ++ delete reply; ++ } ++ } ++ + void sendRequest(); + /*! \brief Parse the response byte array into JSON + * +@@ -140,7 +142,10 @@ class BaseJob::Private { + + QByteArrayList expectedKeys; + +- QScopedPointer reply; ++ // When the QNetworkAccessManager is destroyed it destroys all pending replies. ++ // Using QPointer allows us to know when that happend. ++ QPointer reply; ++ + Status status = Unprepared; + QByteArray rawResponse; + /// Contains a null document in case of non-JSON body (for a successful +@@ -315,16 +320,16 @@ void BaseJob::Private::sendRequest() + + switch (verb) { + case HttpVerb::Get: +- reply.reset(connection->nam()->get(req)); ++ reply = connection->nam()->get(req); + break; + case HttpVerb::Post: +- reply.reset(connection->nam()->post(req, requestData.source())); ++ reply = connection->nam()->post(req, requestData.source()); + break; + case HttpVerb::Put: +- reply.reset(connection->nam()->put(req, requestData.source())); ++ reply = connection->nam()->put(req, requestData.source()); + break; + case HttpVerb::Delete: +- reply.reset(connection->nam()->sendCustomRequest(req, "DELETE", requestData.source())); ++ reply = connection->nam()->sendCustomRequest(req, "DELETE", requestData.source()); + break; + } + } diff --git a/net-libs/libquotient/files/libquotient-0.6.4-no-android.patch b/net-libs/libquotient/files/libquotient-0.6.4-no-android.patch new file mode 100644 index 0000000..5541f4d --- /dev/null +++ b/net-libs/libquotient/files/libquotient-0.6.4-no-android.patch @@ -0,0 +1,29 @@ +From d82cb1f43cab7976e25c6e9ff3e4ae17789ee11c Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Sun, 3 Jan 2021 15:18:01 +0100 +Subject: [PATCH] Install EXPORT_ANDROID_MK only if(ANDROID) + +Signed-off-by: Andreas Sturmlechner +--- + CMakeLists.txt | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2ee1cb4..eec27c8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -321,7 +321,10 @@ install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${ConfigFilesLocation} + ) +-install(EXPORT_ANDROID_MK ${PROJECT_NAME}Targets DESTINATION share/ndk-modules) ++ ++if (ANDROID) ++ install(EXPORT_ANDROID_MK ${PROJECT_NAME}Targets DESTINATION share/ndk-modules) ++endif () + + if (WIN32) + install(FILES mime/packages/freedesktop.org.xml DESTINATION mime/packages) +-- +2.30.0 + diff --git a/net-libs/libquotient/files/libquotient-0.6.4-no-tests.patch b/net-libs/libquotient/files/libquotient-0.6.4-no-tests.patch new file mode 100644 index 0000000..fb884e1 --- /dev/null +++ b/net-libs/libquotient/files/libquotient-0.6.4-no-tests.patch @@ -0,0 +1,42 @@ +From ff972d181f0f9e7bfa327c71450d55f951de27c1 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Sun, 3 Jan 2021 15:05:59 +0100 +Subject: [PATCH] Put Qt5Test dependency behind -DQuotient_INSTALL_TESTS + +Signed-off-by: Andreas Sturmlechner +--- + CMakeLists.txt | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2ee1cb4..2a0908d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -58,7 +58,7 @@ else() + endforeach () + endif() + +-find_package(Qt5 5.9 REQUIRED Network Gui Multimedia Test) ++find_package(Qt5 5.9 REQUIRED Network Gui Multimedia) + get_filename_component(Qt5_Prefix "${Qt5_DIR}/../../../.." ABSOLUTE) + + if (${PROJECT_NAME}_ENABLE_E2EE) +@@ -280,9 +280,12 @@ if (${PROJECT_NAME}_ENABLE_E2EE) + endif() + target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Network Qt5::Gui Qt5::Multimedia) + +-set(TEST_BINARY quotest) +-add_executable(${TEST_BINARY} ${tests_SRCS}) +-target_link_libraries(${TEST_BINARY} Qt5::Core Qt5::Test ${PROJECT_NAME}) ++if(${PROJECT_NAME}_INSTALL_TESTS) ++ find_package(Qt5Test) ++ set(TEST_BINARY quotest) ++ add_executable(${TEST_BINARY} ${tests_SRCS}) ++ target_link_libraries(${TEST_BINARY} Qt5::Core Qt5::Test ${PROJECT_NAME}) ++endif() + + configure_file(${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc @ONLY NEWLINE_STYLE UNIX) + +-- +2.30.0 + diff --git a/dev-libs/libQuotient/libQuotient-9999.ebuild b/net-libs/libquotient/libquotient-0.6.3.ebuild similarity index 61% rename from dev-libs/libQuotient/libQuotient-9999.ebuild rename to net-libs/libquotient/libquotient-0.6.3.ebuild index 4d34ec8..f3c2097 100644 --- a/dev-libs/libQuotient/libQuotient-9999.ebuild +++ b/net-libs/libquotient/libquotient-0.6.3.ebuild @@ -14,31 +14,37 @@ if [[ ${PV} == "9999" ]]; then else SRC_URI="https://github.com/quotient-im/libQuotient/archive/"${PV}".tar.gz -> "${P}".tar.gz" KEYWORDS="~amd64" + S="${WORKDIR}/libQuotient-${PV}" fi -LICENSE="GPL-3" +LICENSE="LGPL-2.1" SLOT="0" -IUSE="e2e extra" +IUSE="e2e" -RDEPEND=" - dev-qt/qtcore - dev-qt/qtgui - dev-qt/qtmultimedia - dev-qt/qtnetwork - dev-qt/qttest +DEPEND=" + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtmultimedia:5 + dev-qt/qtnetwork:5 + dev-qt/qttest:5 e2e? ( dev-libs/libQtOlm ) - !!dev-libs/libqmatrixclient " -DEPEND="${RDEPEND}" +RDEPEND="${DEPEND}" -S=""${WORKDIR}"/"${PN}"-"${PV}"" +PATCHES=( + "${FILESDIR}"/${P}-use-after-free.patch # 0.6.x branch + # downstream patches + "${FILESDIR}"/${P}-no-android.patch + "${FILESDIR}"/${P}-no-tests.patch +) src_configure() { local mycmakeargs=( -DBUILD_SHARED_LIBS=ON -DQuotient_ENABLE_E2EE=$(usex e2e) -DUSE_INTREE_LIBQOLM=OFF - -DQuotient_INSTALL_TESTS=$(usex extra) + -DQuotient_INSTALL_TESTS=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON ) cmake_src_configure } diff --git a/dev-libs/libQuotient/libQuotient-0.6.3.ebuild b/net-libs/libquotient/libquotient-0.6.4.ebuild similarity index 67% rename from dev-libs/libQuotient/libQuotient-0.6.3.ebuild rename to net-libs/libquotient/libquotient-0.6.4.ebuild index 4d34ec8..858c031 100644 --- a/dev-libs/libQuotient/libQuotient-0.6.3.ebuild +++ b/net-libs/libquotient/libquotient-0.6.4.ebuild @@ -14,31 +14,34 @@ if [[ ${PV} == "9999" ]]; then else SRC_URI="https://github.com/quotient-im/libQuotient/archive/"${PV}".tar.gz -> "${P}".tar.gz" KEYWORDS="~amd64" + S="${WORKDIR}/libQuotient-${PV}" fi -LICENSE="GPL-3" +LICENSE="LGPL-2.1" SLOT="0" -IUSE="e2e extra" +IUSE="e2e" -RDEPEND=" - dev-qt/qtcore - dev-qt/qtgui - dev-qt/qtmultimedia - dev-qt/qtnetwork - dev-qt/qttest +DEPEND=" + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtmultimedia:5 + dev-qt/qtnetwork:5 e2e? ( dev-libs/libQtOlm ) - !!dev-libs/libqmatrixclient " -DEPEND="${RDEPEND}" +RDEPEND="${DEPEND}" -S=""${WORKDIR}"/"${PN}"-"${PV}"" +PATCHES=( + "${FILESDIR}"/${P}-no-android.patch + "${FILESDIR}"/${P}-no-tests.patch +) src_configure() { local mycmakeargs=( -DBUILD_SHARED_LIBS=ON -DQuotient_ENABLE_E2EE=$(usex e2e) -DUSE_INTREE_LIBQOLM=OFF - -DQuotient_INSTALL_TESTS=$(usex extra) + -DQuotient_INSTALL_TESTS=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON ) cmake_src_configure } diff --git a/dev-libs/libQuotient/metadata.xml b/net-libs/libquotient/metadata.xml similarity index 64% rename from dev-libs/libQuotient/metadata.xml rename to net-libs/libquotient/metadata.xml index c69cb35..9fd2bf7 100644 --- a/dev-libs/libQuotient/metadata.xml +++ b/net-libs/libquotient/metadata.xml @@ -1,15 +1,10 @@ - - hedmoo@yahoo.com - Andreas Westman Dorcsak - quotient-im/libQuotient Build with e2e encryption support - Install quotest tool diff --git a/profiles/updates/1Q-2021 b/profiles/updates/1Q-2021 new file mode 100644 index 0000000..a4a2222 --- /dev/null +++ b/profiles/updates/1Q-2021 @@ -0,0 +1 @@ +move dev-libs/libQuotient net-libs/libquotient