net-libs/libquotient: readded, revamped
This commit is contained in:
parent
c43761c9e8
commit
7906145250
2
net-libs/libquotient/Manifest
Normal file
2
net-libs/libquotient/Manifest
Normal file
@ -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
|
@ -0,0 +1,29 @@
|
||||
From d82cb1f43cab7976e25c6e9ff3e4ae17789ee11c Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
Date: Sun, 3 Jan 2021 15:18:01 +0100
|
||||
Subject: [PATCH] Install EXPORT_ANDROID_MK only if(ANDROID)
|
||||
|
||||
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
---
|
||||
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
|
||||
|
42
net-libs/libquotient/files/libquotient-0.6.3-no-tests.patch
Normal file
42
net-libs/libquotient/files/libquotient-0.6.3-no-tests.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From ff972d181f0f9e7bfa327c71450d55f951de27c1 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
Date: Sun, 3 Jan 2021 15:05:59 +0100
|
||||
Subject: [PATCH] Put Qt5Test dependency behind -DQuotient_INSTALL_TESTS
|
||||
|
||||
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
---
|
||||
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
|
||||
|
@ -0,0 +1,92 @@
|
||||
From f286ef4c5b3c71510d6ef15e8cc12cada84f3682 Mon Sep 17 00:00:00 2001
|
||||
From: Nicolas Fella <nicolas.fella@gmx.de>
|
||||
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 <QtCore/QTimer>
|
||||
#include <QtCore/QStringBuilder>
|
||||
#include <QtCore/QMetaEnum>
|
||||
+#include <QtCore/QPointer>
|
||||
#include <QtNetwork/QNetworkAccessManager>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
#include <QtNetwork/QNetworkRequest>
|
||||
@@ -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 <typename... Ts>
|
||||
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<QNetworkReply, NetworkReplyDeleter> reply;
|
||||
+ // When the QNetworkAccessManager is destroyed it destroys all pending replies.
|
||||
+ // Using QPointer allows us to know when that happend.
|
||||
+ QPointer<QNetworkReply> 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;
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
From d82cb1f43cab7976e25c6e9ff3e4ae17789ee11c Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
Date: Sun, 3 Jan 2021 15:18:01 +0100
|
||||
Subject: [PATCH] Install EXPORT_ANDROID_MK only if(ANDROID)
|
||||
|
||||
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
---
|
||||
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
|
||||
|
42
net-libs/libquotient/files/libquotient-0.6.4-no-tests.patch
Normal file
42
net-libs/libquotient/files/libquotient-0.6.4-no-tests.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From ff972d181f0f9e7bfa327c71450d55f951de27c1 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
Date: Sun, 3 Jan 2021 15:05:59 +0100
|
||||
Subject: [PATCH] Put Qt5Test dependency behind -DQuotient_INSTALL_TESTS
|
||||
|
||||
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
|
||||
---
|
||||
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
|
||||
|
50
net-libs/libquotient/libquotient-0.6.3.ebuild
Normal file
50
net-libs/libquotient/libquotient-0.6.3.ebuild
Normal file
@ -0,0 +1,50 @@
|
||||
# Copyright 2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit cmake
|
||||
|
||||
DESCRIPTION="A Qt5 library to write cross-platform clients for Matrix"
|
||||
HOMEPAGE="https://matrix.org/docs/projects/sdk/quotient"
|
||||
|
||||
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"
|
||||
S="${WORKDIR}/libQuotient-${PV}"
|
||||
fi
|
||||
|
||||
LICENSE="LGPL-2.1"
|
||||
SLOT="0"
|
||||
IUSE="e2e"
|
||||
|
||||
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 )
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
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=OFF
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
47
net-libs/libquotient/libquotient-0.6.4.ebuild
Normal file
47
net-libs/libquotient/libquotient-0.6.4.ebuild
Normal file
@ -0,0 +1,47 @@
|
||||
# Copyright 2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit cmake
|
||||
|
||||
DESCRIPTION="A Qt5 library to write cross-platform clients for Matrix"
|
||||
HOMEPAGE="https://matrix.org/docs/projects/sdk/quotient"
|
||||
|
||||
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"
|
||||
S="${WORKDIR}/libQuotient-${PV}"
|
||||
fi
|
||||
|
||||
LICENSE="LGPL-2.1"
|
||||
SLOT="0"
|
||||
IUSE="e2e"
|
||||
|
||||
DEPEND="
|
||||
dev-qt/qtcore:5
|
||||
dev-qt/qtgui:5
|
||||
dev-qt/qtmultimedia:5
|
||||
dev-qt/qtnetwork:5
|
||||
e2e? ( dev-libs/libQtOlm )
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
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=OFF
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
10
net-libs/libquotient/metadata.xml
Normal file
10
net-libs/libquotient/metadata.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<upstream>
|
||||
<remote-id type="github">quotient-im/libQuotient</remote-id>
|
||||
</upstream>
|
||||
<use>
|
||||
<flag name="e2e">Build with e2e encryption support</flag>
|
||||
</use>
|
||||
</pkgmetadata>
|
1
profiles/updates/1Q-2021
Normal file
1
profiles/updates/1Q-2021
Normal file
@ -0,0 +1 @@
|
||||
move dev-libs/libQuotient net-libs/libquotient
|
Loading…
Reference in New Issue
Block a user