gnu: quassel: Update to 0.14.0.

* gnu/packages/irc.scm (quassel): Update to 0.14.0.
[source]: Remove patch.
[inputs]: Add boost, perl, sonnet.
* gnu/packages/patches/quassel-qt-514-compat.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
This commit is contained in:
Efraim Flashner 2022-01-13 16:42:28 +02:00
parent a0c8c8cd53
commit a9558ec5e8
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351
3 changed files with 19 additions and 148 deletions

View file

@ -1727,7 +1727,6 @@ dist_patch_DATA = \
%D%/packages/patches/qtbase-use-TZDIR.patch \
%D%/packages/patches/qtscript-disable-tests.patch \
%D%/packages/patches/quagga-reproducible-build.patch \
%D%/packages/patches/quassel-qt-514-compat.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
%D%/packages/patches/qtwebkit-pbutils-include.patch \
%D%/packages/patches/qtwebkit-fix-building-with-bison-3.7.patch \

View file

@ -2,7 +2,7 @@
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 20172022 Tobias Geerinckx-Rice <me@tobias.gr>
@ -47,6 +47,7 @@ (define-module (gnu packages irc)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages backup)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
@ -90,52 +91,53 @@ (define-module (gnu packages irc)
(define-public quassel
(package
(name "quassel")
(version "0.13.1")
(version "0.14.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://quassel-irc.org/pub/quassel-"
version ".tar.bz2"))
version ".tar.xz"))
(sha256
(base32
"0mg8jydc70vlylppzich26q4s40kr78r3ysfyjwisfvlg2byxvs8"))
(patches (search-patches "quassel-qt-514-compat.patch"))
"042fzssydvv35jjknziph8iyyjsyrsb2hp3d0ix0bqbagbrpf1q9"))
(modules '((guix build utils)))
;; We don't want to install the bundled inxi script.
(snippet
'(begin
(delete-file "data/scripts/inxi")
#t))))
(delete-file "data/scripts/inxi")))))
(build-system qt-build-system)
(arguments
;; The three binaries are not mutually exlusive, and are all built
;; by default.
'(#:configure-flags '(;;"-DWANT_QTCLIENT=OFF" ; 6.1 MiB
;;"-DWANT_CORE=OFF" ; 3.0 MiB
;;"-DWANT_MONO=OFF" ; 7.6 MiB
"-DWITH_KDE=OFF" ; no to kde integration ...
"-DWITH_BUNDLED_ICONS=ON" ; so we install bundled icons
"-DWITH_OXYGEN_ICONS=ON" ; also the oxygen ones
"-DWITH_WEBENGINE=OFF") ; we don't depend on qtwebengine
'(#:configure-flags '(;;"-DWANT_QTCLIENT=OFF"
;;"-DWANT_CORE=OFF"
;;"-DWANT_MONO=OFF"
"-DWITH_KDE=OFF"
"-DWITH_BUNDLED_ICONS=ON"
"-DWITH_OXYGEN_ICONS=ON"
;; This disables link previews.
"-DWITH_WEBENGINE=OFF")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-inxi-reference
(lambda* (#:key inputs #:allow-other-keys)
(let ((inxi (search-input-file inputs "/bin/inxi")))
(symlink inxi "data/scripts/inxi")
#t))))
(symlink inxi "data/scripts/inxi")))))
#:tests? #f)) ; no test target
(native-inputs
(list extra-cmake-modules pkg-config qttools))
(inputs
`(("inxi" ,inxi-minimal)
`(("boost" ,boost)
("inxi" ,inxi-minimal)
("libdbusmenu-qt" ,libdbusmenu-qt)
("perl" ,perl)
("qca" ,qca)
("qtbase" ,qtbase-5)
("qtmultimedia" ,qtmultimedia)
("qtscript" ,qtscript)
("qtsvg" ,qtsvg)
("snorenotify" ,snorenotify)
("sonnet" ,sonnet)
("zlib" ,zlib)))
(home-page "https://quassel-irc.org/")
(synopsis "Distributed IRC client")

View file

@ -1,130 +0,0 @@
https://github.com/quassel/quassel/commit/579e559a6322209df7cd51c34801fecff5fe734b.patch
Based on the above patch, with some changes due to how the code has changed
in the time since 0.13.1 was released.
https://git.archlinux.org/svntogit/community.git/plain/trunk/quassel-0.13.1-qt5.14.patch?h=packages/quassel
From 579e559a6322209df7cd51c34801fecff5fe734b Mon Sep 17 00:00:00 2001
From: Manuel Nickschas <sputnick@quassel-irc.org>
Date: Tue, 7 Jan 2020 18:34:54 +0100
Subject: [PATCH] common: Disable enum type stream operators for Qt >= 5.14
Starting from version 5.14, Qt provides stream operators for enum
types, which collide with the ones we ship in types.h. Disable
Quassel's stream operators when compiling against Qt 5.14 or later.
Add a unit test that ensures that enum serialization honors the width
of the underlying type.
---
src/common/types.h | 2 +
tests/common/CMakeLists.txt | 2 +
tests/common/typestest.cpp | 79 +++++++++++++++++++++++++++++++++++++
3 files changed, 83 insertions(+)
create mode 100644 tests/common/typestest.cpp
diff --git a/src/common/types.h b/src/common/types.h
index d3742b788..e2a9aab5e 100644
--- a/src/common/types.h
+++ b/src/common/types.h
@@ -140,6 +140,7 @@ Q_DECLARE_METATYPE(QHostAddress)
typedef QList<MsgId> MsgIdList;
typedef QList<BufferId> BufferIdList;
+#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
/**
* Catch-all stream serialization operator for enum types.
*
@@ -169,6 +170,7 @@ QDataStream &operator>>(QDataStream &in, T &value) {
value = static_cast<T>(v);
return in;
}
+#endif
// Exceptions
diff --git a/tests/common/typestest.cpp b/tests/common/typestest.cpp
new file mode 100644
index 000000000..04031c299
--- /dev/null
+++ b/tests/common/typestest.cpp
@@ -0,0 +1,79 @@
+/***************************************************************************
+ * Copyright (C) 2005-2020 by the Quassel Project *
+ * devel@quassel-irc.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) version 3. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <cstdint>
+
+#include <QByteArray>
+#include <QDataStream>
+#include <QObject>
+
+#include "testglobal.h"
+#include "types.h"
+
+using namespace ::testing;
+
+class EnumHolder
+{
+ Q_GADGET
+
+public:
+ enum class Enum16 : uint16_t {};
+ enum class Enum32 : uint32_t {};
+
+ enum class EnumQt16 : uint16_t {};
+ Q_ENUM(EnumQt16)
+ enum class EnumQt32 : uint32_t {};
+ Q_ENUM(EnumQt32)
+};
+
+// Verify that enums are (de)serialized as their underlying type
+TEST(TypesTest, enumSerialization)
+{
+ QByteArray data;
+ QDataStream out(&data, QIODevice::WriteOnly);
+
+ // Serialize
+ out << EnumHolder::Enum16(0xabcd);
+ ASSERT_THAT(data.size(), Eq(2));
+ out << EnumHolder::Enum32(0x123456);
+ ASSERT_THAT(data.size(), Eq(6));
+ out << EnumHolder::EnumQt16(0x4321);
+ ASSERT_THAT(data.size(), Eq(8));
+ out << EnumHolder::Enum32(0xfedcba);
+ ASSERT_THAT(data.size(), Eq(12));
+ ASSERT_THAT(out.status(), Eq(QDataStream::Status::Ok));
+
+ // Deserialize
+ QDataStream in(data);
+ EnumHolder::Enum16 enum16;
+ EnumHolder::Enum32 enum32;
+ EnumHolder::EnumQt16 enumQt16;
+ EnumHolder::EnumQt32 enumQt32;
+ in >> enum16 >> enum32 >> enumQt16 >> enumQt32;
+ ASSERT_THAT(in.status(), Eq(QDataStream::Status::Ok));
+ EXPECT_TRUE(in.atEnd());
+
+ EXPECT_THAT((int)enum16, Eq(0xabcd));
+ EXPECT_THAT((int)enum32, Eq(0x123456));
+ EXPECT_THAT((int)enumQt16, Eq(0x4321));
+ EXPECT_THAT((int)enumQt32, Eq(0xfedcba));
+}
+
+#include "typestest.moc"