commit:     69bd066772638de9aa56483b6dbd7b9bb5a79308
Author:     Conrad Kostecki <conrad <AT> kostecki <DOT> com>
AuthorDate: Fri Nov 16 23:46:47 2018 +0000
Commit:     Andrey Utkin <andrey_utkin <AT> gentoo <DOT> org>
CommitDate: Sat Nov 24 02:44:56 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=69bd0667

net-im/swift: New package

An elegant, secure, adaptable and intuitive XMPP client.

Closes: https://bugs.gentoo.org/334887
Closes: https://bugs.gentoo.org/652464
Package-Manager: Portage-2.3.51, Repoman-2.3.12
Signed-off-by: Conrad Kostecki <conrad <AT> kostecki.com>
Signed-off-by: Andrey Utkin <andrey_utkin <AT> gentoo.org>

 net-im/swift/Manifest                              |   1 +
 ...generated-files-handle-unicode-characters.patch |  38 ++++
 .../files/swift-4.0.2-qt-5.11-compatibility.patch  |  35 ++++
 net-im/swift/metadata.xml                          |  23 +++
 net-im/swift/swift-4.0.2.ebuild                    | 207 +++++++++++++++++++++
 5 files changed, 304 insertions(+)

diff --git a/net-im/swift/Manifest b/net-im/swift/Manifest
new file mode 100644
index 00000000000..d0e86af54c3
--- /dev/null
+++ b/net-im/swift/Manifest
@@ -0,0 +1 @@
+DIST swift-4.0.2.tar.gz 19083393 BLAKE2B 
de4ad1c3d68dfc4d693cdebdf4e18809210aa4e83af31b77bf730c7018507877852b5ea634623c037250de4005606108bd0372d39177093769c5dc5f72bd4812
 SHA512 
b7d4b90f387d5ea4ac3ca31794eabd1f12a64274628d75c7570f40269777b9003182884730a6340c5e0b5b7928a68bda5e49be623b47da9fa64fe4c3f25be167

diff --git 
a/net-im/swift/files/swift-4.0.2-make-generated-files-handle-unicode-characters.patch
 
b/net-im/swift/files/swift-4.0.2-make-generated-files-handle-unicode-characters.patch
new file mode 100644
index 00000000000..7fd2e386d9d
--- /dev/null
+++ 
b/net-im/swift/files/swift-4.0.2-make-generated-files-handle-unicode-characters.patch
@@ -0,0 +1,38 @@
+From 39ff091cddf8fd5e01047d80c7ed60c150537705 Mon Sep 17 00:00:00 2001
+From: Thanos Doukoudakis <[email protected]>
+Date: Fri, 11 May 2018 11:26:39 +0100
+Subject: Make generated files handle Unicode characters
+
+This patch handles a case where some of the files used to generate COPYING,
+were containing unicode strings, which could lead to a failure when building
+sid package. The code now will check the type of the string before writing to
+the file, and if needed it will transform it to the appropriate format.
+
+Test-Information:
+Generated the sid package with package_all_platforms script with no problems.
+Created a debian sid box and tested the installation of the generated
+packages. Validated the output generated in Windows 10 and Ubuntu 16.04 builds
+through the "About" dialog in Swift.
+
+Change-Id: I05e518b758f316d9fbf23c1079be5a462e75106c
+
+diff --git a/BuildTools/SCons/Tools/textfile.py 
b/BuildTools/SCons/Tools/textfile.py
+index 89f8963..9b424f2 100644
+--- a/BuildTools/SCons/Tools/textfile.py
++++ b/BuildTools/SCons/Tools/textfile.py
+@@ -113,7 +113,11 @@ def _action(target, source, env):
+     lsep = None
+     for s in source:
+         if lsep: fd.write(lsep)
+-        fd.write(_do_subst(s, subs))
++        stringtowrite = _do_subst(s, subs)
++        if isinstance(stringtowrite, str):
++          fd.write(stringtowrite)
++        elif isinstance(stringtowrite, unicode):
++          fd.write(stringtowrite.encode('utf-8'))
+         lsep = linesep
+     fd.close()
+ 
+-- 
+cgit v0.10.2-6-g49f6
+

diff --git a/net-im/swift/files/swift-4.0.2-qt-5.11-compatibility.patch 
b/net-im/swift/files/swift-4.0.2-qt-5.11-compatibility.patch
new file mode 100644
index 00000000000..db633945b49
--- /dev/null
+++ b/net-im/swift/files/swift-4.0.2-qt-5.11-compatibility.patch
@@ -0,0 +1,35 @@
+From 1d18148c86377787a8c77042b12ea66f20cb2ca9 Mon Sep 17 00:00:00 2001
+From: Tobias Markmann <[email protected]>
+Date: Thu, 21 Jun 2018 13:04:56 +0200
+Subject: Add missing include for QAbstractItemModel
+
+This fixes building Swift with Qt 5.11.
+
+Test-Information:
+
+Builds and tests pass on macOS 10.13.5 with Qt 5.11.0.
+
+Change-Id: I1be2cd081d8a520ec38ab7cca5ada0d7fc39b777
+
+diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.h 
b/Swift/QtUI/UserSearch/QtUserSearchWindow.h
+index 0714ac1..fe536ab 100644
+--- a/Swift/QtUI/UserSearch/QtUserSearchWindow.h
++++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.h
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2010-2016 Isode Limited.
++ * Copyright (c) 2010-2018 Isode Limited.
+  * All rights reserved.
+  * See the COPYING file for more information.
+  */
+@@ -8,6 +8,7 @@
+ 
+ #include <set>
+ 
++#include <QAbstractItemModel>
+ #include <QWizard>
+ 
+ #include <Swiften/Base/Override.h>
+-- 
+cgit v0.10.2-6-g49f6
+

diff --git a/net-im/swift/metadata.xml b/net-im/swift/metadata.xml
new file mode 100644
index 00000000000..acb7295d48a
--- /dev/null
+++ b/net-im/swift/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>[email protected]</email>
+               <name>Conrad Kostecki</name>
+       </maintainer>
+       <maintainer type="project">
+               <email>[email protected]</email>
+               <name>Proxy Maintainers</name>
+       </maintainer>
+       <longdescription>
+               Swift is an elegant, secure, adaptable and intuitive XMPP 
client,
+               with features that make it suitable for a wide range of use 
scenarios.
+               Swiften is a robust, high-quality, standards-compliant,
+               cross-platform, and performant C++ library for
+               implementing XMPP applications.
+       </longdescription>
+       <use>
+               <flag name="client">Build the full graphical XMPP client.</flag>
+               <flag name="gconf">Enable configuration through 
<pkg>gnome-base/gconf</pkg>.</flag>
+       </use>
+</pkgmetadata>

diff --git a/net-im/swift/swift-4.0.2.ebuild b/net-im/swift/swift-4.0.2.ebuild
new file mode 100644
index 00000000000..c67278ade28
--- /dev/null
+++ b/net-im/swift/swift-4.0.2.ebuild
@@ -0,0 +1,207 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit gnome2-utils scons-utils toolchain-funcs
+
+DESCRIPTION="An elegant, secure, adaptable and intuitive XMPP Client"
+HOMEPAGE="https://www.swift.im/";
+SRC_URI="https://swift.im/downloads/releases/${P}/${P}.tar.gz";
+
+LICENSE="BSD BSD-1 CC-BY-3.0 GPL-3 OFL-1.1"
+SLOT="4/0"
+KEYWORDS="~amd64"
+IUSE="client expat gconf +icu +idn lua spell test zeroconf"
+REQUIRED_USE="
+       || ( icu idn )
+       gconf? ( client )
+       spell? ( client )
+"
+
+RDEPEND="
+       dev-db/sqlite:3
+       dev-libs/boost:=
+       dev-libs/openssl:0=
+       net-libs/libnatpmp
+       net-libs/miniupnpc:=
+       sys-libs/zlib:=
+       client? (
+               dev-qt/qtcore:5
+               dev-qt/qtdbus:5
+               dev-qt/qtgui:5
+               dev-qt/qtmultimedia:5
+               dev-qt/qtnetwork:5
+               dev-qt/qtsvg:5
+               dev-qt/qtwidgets:5
+               dev-qt/qtwebkit:5
+               dev-qt/qtx11extras:5
+               net-dns/avahi
+       )
+       expat? ( dev-libs/expat )
+       !expat? ( dev-libs/libxml2:2 )
+       gconf? ( gnome-base/gconf:2 )
+       icu? ( dev-libs/icu:= )
+       idn? ( net-dns/libidn:= )
+       lua? ( dev-lang/lua:= )
+       spell? ( app-text/hunspell:= )
+"
+
+DEPEND="
+       ${RDEPEND}
+       >=dev-util/scons-3.0.1-r3
+       client? ( dev-qt/linguist-tools:5 )
+       test? ( net-dns/avahi )
+"
+
+# Tests don't run, as they fail with "[QA/UnitTest/**dummy**] Error -6".
+RESTRICT="test"
+
+DOCS=(
+       "DEVELOPMENT.md"
+       "README.md"
+       "Swiften/ChangeLog.md"
+)
+
+PATCHES=(
+       "${FILESDIR}"/${P}-make-generated-files-handle-unicode-characters.patch
+       "${FILESDIR}"/${P}-qt-5.11-compatibility.patch
+)
+
+src_prepare() {
+       default
+
+       # Hack for finding Qt system libs
+       mkdir "${T}"/qt || die
+       ln -s "${EPREFIX%/}"/usr/$(get_libdir)/qt5/bin "${T}"/qt/bin || die
+       ln -s "${EPREFIX%/}"/usr/$(get_libdir)/qt5 "${T}"/qt/lib || die
+       ln -s "${EPREFIX%/}"/usr/include/qt5 "${T}"/qt/include || die
+
+       # Remove parts of Swift, which a user don't want to compile
+       if ! use client; then rm -fr Swift Slimber || die; fi
+       if ! use lua; then rm -fr Sluift || die; fi
+       if ! use zeroconf; then
+               rm -fr Limber || die
+               if use client; then rm -fr Slimber || die; fi
+       fi
+
+       # Remove '3rdParty', as the system libs should be used
+       # `CppUnit`, `GoogleTest` and `HippoMocks` are needed for tests
+       local my3rdparty=(
+               Boost
+               Breakpad
+               DocBook
+               Expat
+               LCov
+               Ldns
+               LibIDN
+               LibMiniUPnPc
+               LibNATPMP
+               Lua
+               OpenSSL
+               SCons
+               SQLite
+               Unbound
+               ZLib
+       )
+
+       if use test; then
+               cd 3rdParty && rm -fr "${my3rdparty[@]}" || die
+       else
+               rm -fr 3rdParty || die
+       fi
+}
+
+src_configure() {
+       MYSCONS=(
+               ar="$(tc-getAR)"
+               allow_warnings="yes"
+               assertions="no"
+               build_examples="yes"
+               boost_bundled_enable="false"
+               boost_force_bundled="false"
+               cc="$(tc-getCC)"
+               ccache="no"
+               ccflags="${CFLAGS}"
+               coverage="no"
+               cxx="$(tc-getCXX)"
+               cxxflags="${CXXFLAGS}"
+               debug="no"
+               distcc="no"
+               experimental="yes"
+               experimental_ft="yes"
+               hunspell_enable="$(usex spell)"
+               icu="$(usex icu)"
+               install_git_hooks="no"
+               libidn_bundled_enable="false"
+               libminiupnpc_force_bundled="false"
+               libnatpmp_force_bundled="false"
+               link="$(tc-getCXX)"
+               linkflags="${LDFLAGS}"
+               max_jobs="no"
+               optimize="no"
+               qt="${T}/qt"
+               qt5="$(usex client)"
+               swiften_dll="true"
+               swift_mobile="no"
+               target="native"
+               test="none"
+               try_avahi="$(usex client)"
+               try_expat="$(usex expat)"
+               try_gconf="$(usex gconf)"
+               try_libidn="$(usex idn)"
+               try_libxml="$(usex !expat)"
+               tls_backend="openssl"
+               unbound="no"
+               V="1"
+               valgrind="no"
+               zlib_bundled_enable="false"
+       )
+}
+
+src_compile() {
+       local myesconsinstall=(
+               Swiften
+               $(usex client Swift '')
+               $(usex lua Sluift '')
+               $(usex zeroconf Limber '')
+               $(usex zeroconf "$(usex client Slimber '')" '')
+       )
+
+       escons "${MYSCONS[@]}" "${myesconsinstall[@]}"
+}
+
+src_test() {
+       MYSCONS=(
+               V="1"
+       )
+
+       escons "${MYSCONS[@]}" test=unit QA
+}
+
+src_install() {
+       local myesconsinstall=(
+               SWIFTEN_INSTALLDIR="${ED%/}/usr"
+               SWIFTEN_LIBDIR="${ED%/}/usr/$(get_libdir)"
+               $(usex client "SWIFT_INSTALLDIR=${ED%/}/usr" '')
+               $(usex lua "SLUIFT_DIR=${ED%/}/usr" '')
+               $(usex lua "SLUIFT_INSTALLDIR=${ED%/}/usr" '')
+               "${ED}"
+       )
+
+       escons "${MYSCONS[@]}" "${myesconsinstall[@]}"
+
+       use zeroconf && dobin Limber/limber
+       use zeroconf && use client && newbin Slimber/CLI/slimber slimber-cli
+       use zeroconf && use client && newbin Slimber/Qt/slimber slimber-qt
+
+       einstalldocs
+}
+
+pkg_postinst() {
+       use client && gnome2_icon_cache_update
+}
+
+pkg_postrm() {
+       use client && gnome2_icon_cache_update
+}

Reply via email to