commit:     051f912c4915ce603ccba7bc15c34ae708c2b851
Author:     Conrad Kostecki <conrad <AT> kostecki <DOT> com>
AuthorDate: Sat Nov 17 20:30:38 2018 +0000
Commit:     Andrey Utkin <andrey_utkin <AT> gentoo <DOT> org>
CommitDate: Sat Nov 24 02:45:20 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=051f912c

net-im/spectrum2: New package

Spectrum2 is an open source instant messaging jabber transport daemon.

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

 net-im/spectrum2/Manifest                          |   1 +
 .../spectrum2-2.0.9-remove_debug_cflags.patch      |  13 +++
 .../files/spectrum2-2.0.9-use_qt5_libcommuni.patch |  54 +++++++++
 net-im/spectrum2/files/spectrum2.initd             |  47 ++++++++
 net-im/spectrum2/files/spectrum2.service           |  12 ++
 net-im/spectrum2/files/spectrum2.tmpfiles          |   1 +
 net-im/spectrum2/metadata.xml                      |  26 +++++
 net-im/spectrum2/spectrum2-2.0.9.ebuild            | 125 +++++++++++++++++++++
 8 files changed, 279 insertions(+)

diff --git a/net-im/spectrum2/Manifest b/net-im/spectrum2/Manifest
new file mode 100644
index 00000000000..f17b8486402
--- /dev/null
+++ b/net-im/spectrum2/Manifest
@@ -0,0 +1 @@
+DIST spectrum2-2.0.9.tar.gz 842688 BLAKE2B 
32cdb95c161aa97338895fb144200ac94d200aefb58300a8f55b03457b3aae1a0ef4a60311f0e2be8e3f3e331625d04ecd61a9583d07794c4398762e1348b939
 SHA512 
f111133d3d327619ebbeeaa8c329b09dbdbef9c66ec7bc06eb6eac8c54e144cbf2d81d2751699bf97ae1d1bf0a94581f3971394a7f06b9a4d69f6248f1497982

diff --git a/net-im/spectrum2/files/spectrum2-2.0.9-remove_debug_cflags.patch 
b/net-im/spectrum2/files/spectrum2-2.0.9-remove_debug_cflags.patch
new file mode 100644
index 00000000000..19e3b83d230
--- /dev/null
+++ b/net-im/spectrum2/files/spectrum2-2.0.9-remove_debug_cflags.patch
@@ -0,0 +1,13 @@
+--- a/CMakeLists.txt   2018-09-17 09:46:40.000000000 +0200
++++ b/CMakeLists.txt   2018-09-20 21:04:29.000000000 +0200
+@@ -384,10 +384,6 @@
+ endif()
+ 
+ if(CMAKE_BUILD_TYPE MATCHES Debug)
+-      if (CMAKE_COMPILER_IS_GNUCXX)
+-              ADD_DEFINITIONS(-O0)
+-              ADD_DEFINITIONS(-ggdb)
+-      endif()
+       ADD_DEFINITIONS(-DDEBUG)
+       message("Debug             : yes")
+ else(CMAKE_BUILD_TYPE MATCHES Debug)

diff --git a/net-im/spectrum2/files/spectrum2-2.0.9-use_qt5_libcommuni.patch 
b/net-im/spectrum2/files/spectrum2-2.0.9-use_qt5_libcommuni.patch
new file mode 100644
index 00000000000..27e23db4484
--- /dev/null
+++ b/net-im/spectrum2/files/spectrum2-2.0.9-use_qt5_libcommuni.patch
@@ -0,0 +1,54 @@
+--- a/CMakeLists.txt   2018-09-17 09:46:40.000000000 +0200
++++ b/CMakeLists.txt   2018-09-20 20:57:35.000000000 +0200
+@@ -182,8 +182,7 @@
+ if(ENABLE_IRC)
+       find_package(Communi)
+ 
+-      INCLUDE(FindQt4)
+-      FIND_PACKAGE(Qt4 COMPONENTS QtCore QtNetwork)
++      FIND_PACKAGE(Qt5 COMPONENTS Core Network)
+       # ADD_DEFINITIONS(${SWIFTEN_CFLAGS})
+       ADD_DEFINITIONS(-DSUPPORT_LEGACY_CAPS)
+       # ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=2)
+@@ -321,7 +320,6 @@
+               message("IRC plugin        : yes")
+               include_directories(${QT_QTNETWORK_INCLUDE_DIR})
+               include_directories(${IRC_INCLUDE_DIR})
+-              include(${QT_USE_FILE})
+       else()
+               if(ENABLE_IRC)
+                       message("IRC plugin        : no (install libCommuni and 
libprotobuf-dev)")
+--- a/backends/libcommuni/CMakeLists.txt       2018-09-17 09:46:40.000000000 
+0200
++++ b/backends/libcommuni/CMakeLists.txt       2018-09-20 20:59:31.000000000 
+0200
+@@ -1,14 +1,14 @@
+ cmake_minimum_required(VERSION 2.6)
+ FILE(GLOB SRC *.cpp)
+ FILE(GLOB HEADERS *.h)
+-QT4_WRAP_CPP(SRC ${HEADERS} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
+-add_definitions(-DQT_NO_KEYWORDS)
++QT5_WRAP_CPP(SRC ${HEADERS} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
+ ADD_EXECUTABLE(spectrum2_libcommuni_backend ${SRC})
++include_directories(${Qt5Core_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
+ 
+ if (NOT WIN32)
+-      target_link_libraries(spectrum2_libcommuni_backend ${IRC_LIBRARY} 
Qt4::QtNetwork Qt4::QtCore transport pthread)
++      target_link_libraries(spectrum2_libcommuni_backend ${IRC_LIBRARY} 
Qt5::Network Qt5::Core transport pthread)
+ else ()
+-      target_link_libraries(spectrum2_libcommuni_backend ${IRC_LIBRARY} 
Qt4::QtNetwork Qt4::QtCore transport)
++      target_link_libraries(spectrum2_libcommuni_backend ${IRC_LIBRARY} 
Qt5::Network Qt5::Core transport)
+ endif()
+ INSTALL(TARGETS spectrum2_libcommuni_backend RUNTIME DESTINATION bin)
+ 
+--- a/cmake_modules/FindCommuni.cmake  2018-09-17 09:46:40.000000000 +0200
++++ b/cmake_modules/FindCommuni.cmake  2018-09-20 21:00:04.000000000 +0200
+@@ -1,8 +1,7 @@
+-find_package(Qt4)
+-include( ${QT_USE_FILE} )
++find_package(Qt5Network)
+ 
+ FIND_LIBRARY(IRC_LIBRARY NAMES IrcCore PATHS ${QT_LIBRARY_DIR})
+-FIND_PATH(IRC_INCLUDE_DIR NAMES "IrcCore/ircglobal.h" PATHS ${QT_INCLUDE_DIR} 
PATH_SUFFIXES Communi)
++FIND_PATH(IRC_INCLUDE_DIR NAMES "IrcCore/ircglobal.h" PATHS 
${Qt5Core_INCLUDE_DIRS} ${Qt5Core_INCLUDE_DIRS}"/.." PATH_SUFFIXES Communi)
+ 
+ # message( STATUS ${IRC_LIBRARY})
+ if( IRC_LIBRARY AND IRC_INCLUDE_DIR )

diff --git a/net-im/spectrum2/files/spectrum2.initd 
b/net-im/spectrum2/files/spectrum2.initd
new file mode 100644
index 00000000000..8a35dbe75bc
--- /dev/null
+++ b/net-im/spectrum2/files/spectrum2.initd
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/bin/spectrum2_manager"
+command_group="spectrum"
+command_user="spectrum"
+name="Spectrum2 Transport"
+shell="/bin/sh"
+su="/bin/su"
+
+depend() {
+       need net
+}
+
+start() {
+       ebegin "Starting ${name}"
+       "${su}" "${command_user}" -c "${command} start" -s "${shell}"
+       eend $?
+}
+
+start_pre() {
+       # Ensure /run/spectrum2 dir is owned by spectrum user.
+       # spectrum2_manager stores pidfiles of individual services here.
+       # See security related comment at the bottom.
+       checkpath -d -o "${command_user}:${command_group}" -q "/run/spectrum2"
+}
+
+status() {
+       ebegin "Status ${name}"
+       "${su}" "${command_user}" -c "${command} status" -s "${shell}"
+       eend $?
+}
+
+stop() {
+       ebegin "Stopping ${name}"
+       "${su}" "${command_user}" -c "${command} stop" -s "${shell}"
+       eend $?
+}
+
+# Andrey Utkin <[email protected]> (24 Nov 2018)
+# Conrad Kostecki <[email protected]> (24 Nov 2018)
+# We are aware of many security issues caused by careless chowning, see
+# 
http://michael.orlitzky.com/articles/end_root_chowning_now_(make_etc-init.d_great_again).xhtml
+# We believe none of these issues apply.
+# These pidfiles are not read by any privileged process.
+# checkpath here chowns only the dir itself and doesn't act recursively.

diff --git a/net-im/spectrum2/files/spectrum2.service 
b/net-im/spectrum2/files/spectrum2.service
new file mode 100644
index 00000000000..9d5b72315ef
--- /dev/null
+++ b/net-im/spectrum2/files/spectrum2.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Spectrum2 Transport
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/spectrum2_manager start
+ExecStop=/usr/bin/spectrum2_manager stop
+User=spectrum
+Group=spectrum
+
+[Install]
+WantedBy=multi-user.target

diff --git a/net-im/spectrum2/files/spectrum2.tmpfiles 
b/net-im/spectrum2/files/spectrum2.tmpfiles
new file mode 100644
index 00000000000..4ce6f1c3ca7
--- /dev/null
+++ b/net-im/spectrum2/files/spectrum2.tmpfiles
@@ -0,0 +1 @@
+d /run/spectrum2 0700 specturm spectrum - -

diff --git a/net-im/spectrum2/metadata.xml b/net-im/spectrum2/metadata.xml
new file mode 100644
index 00000000000..d6eaa6f54e2
--- /dev/null
+++ b/net-im/spectrum2/metadata.xml
@@ -0,0 +1,26 @@
+<?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>
+               Spectrum is an open source instant messaging transport.
+               It allows users to chat together even when they are using
+               different IM networks. It acts as a transport layer between
+               the users as showed in the animation above.
+       </longdescription>
+       <use>
+               <flag name="frotz">Enables the Z-Engine backend.</flag>
+               <flag name="irc">Enables the IRC backend, based on 
<pkg>net-im/libcommuni</pkg>.</flag>
+               <flag name="purple">Enables the libpurple backend, based on 
<pkg>net-im/pidgin</pkg>.</flag>
+               <flag name="sms">Enables the SMS backend, based on 
<pkg>app-mobilephone/smstools</pkg>.</flag>
+               <flag name="whatsapp">Enables the WhatsApp backend, based on 
<pkg>net-im/transwhat</pkg>.</flag>
+               <flag name="twitter">Enables the Twitter backend.</flag>
+       </use>
+</pkgmetadata>

diff --git a/net-im/spectrum2/spectrum2-2.0.9.ebuild 
b/net-im/spectrum2/spectrum2-2.0.9.ebuild
new file mode 100644
index 00000000000..42cec5837e6
--- /dev/null
+++ b/net-im/spectrum2/spectrum2-2.0.9.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit cmake-utils python-single-r1 systemd user
+
+DESCRIPTION="An open source instant messaging transport"
+HOMEPAGE="https://www.spectrum.im";
+SRC_URI="https://github.com/SpectrumIM/spectrum2/archive/${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="debug doc frotz irc mysql postgres purple sms +sqlite test twitter 
whatsapp xmpp"
+REQUIRED_USE="|| ( mysql postgres sqlite )"
+
+RDEPEND="
+       dev-libs/boost:=
+       dev-libs/expat
+       dev-libs/log4cxx
+       dev-libs/jsoncpp:=
+       dev-libs/openssl:0=
+       dev-libs/popt
+       dev-libs/protobuf:=
+       net-dns/libidn:0=
+       net-misc/curl
+       sys-libs/zlib:=
+       frotz? ( !games-engines/frotz )
+       irc? ( net-im/libcommuni )
+       mysql? (
+               || (
+                       dev-db/mariadb-connector-c
+                       dev-db/mysql-connector-c
+               )
+       )
+       postgres? ( dev-libs/libpqxx:= )
+       purple? (
+               dev-libs/glib
+               dev-libs/libev:=
+               net-im/pidgin:=
+       )
+       sms? ( app-mobilephone/smstools )
+       sqlite? ( dev-db/sqlite:3 )
+       twitter? ( net-misc/curl )
+       whatsapp? ( net-im/transwhat )
+       xmpp? ( net-im/swift:= )"
+
+DEPEND="
+       ${PYTHON_DEPS}
+       ${RDEPEND}
+       doc? ( app-doc/doxygen )
+       test? (
+               dev-python/sleekxmpp[${PYTHON_USEDEP}]
+               dev-util/cppunit
+               net-irc/ngircd
+       )
+"
+
+PATCHES=(
+       "${FILESDIR}/${P}-remove_debug_cflags.patch"
+       "${FILESDIR}/${P}-use_qt5_libcommuni.patch"
+)
+
+# Tests are currently restricted, as they do completly fail
+RESTRICT="test"
+
+pkg_setup() {
+       enewgroup spectrum
+       enewuser spectrum -1 -1 /var/lib/spectrum2 spectrum
+
+       use test && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       # Respect users LDFLAGS
+       sed -i -e "s/-Wl,-export-dynamic/& ${LDFLAGS}/" 
spectrum/src/CMakeLists.txt || die
+
+       # Respect users CFLAGS, when compiling for debug mode
+       # Since Spectrum2 searches for a qt4 compiled libcommuni,
+       # it must be patched, to find the qt5 compiled libcommuni,
+       # See: https://github.com/SpectrumIM/spectrum2/pull/253
+       cmake-utils_src_prepare
+}
+
+src_configure() {
+       use debug && CMAKE_BUILD_TYPE="Debug"
+
+       local mycmakeargs=(
+               -DENABLE_DOCS="$(usex doc)"
+               -DENABLE_FROTZ="$(usex frotz)"
+               -DENABLE_IRC="$(usex irc)"
+               -DENABLE_MYSQL="$(usex mysql)"
+               -DENABLE_PQXX="$(usex postgres)"
+               -DENABLE_PURPLE="$(usex purple)"
+               -DENABLE_SMSTOOLS3="$(usex sms)"
+               -DENABLE_SQLITE3="$(usex sqlite)"
+               -DENABLE_TESTS="$(usex test)"
+               -DENABLE_TWITTER="$(usex twitter)"
+               -DENABLE_XMPP="$(usex xmpp)"
+               -DLIB_INSTALL_DIR="$(get_libdir)"
+       )
+
+       cmake-utils_src_configure
+}
+
+src_test() {
+       cd tests/libtransport && "${EPYTHON}" ../start.py || die
+}
+
+src_install() {
+       cmake-utils_src_install
+
+       diropts -o spectrum -g spectrum
+       keepdir /var/log/spectrum2 /var/lib/spectrum2
+       diropts
+
+       newinitd "${FILESDIR}"/spectrum2.initd spectrum2
+       systemd_newunit "${FILESDIR}"/spectrum2.service spectrum2.service
+       systemd_newtmpfilesd "${FILESDIR}"/spectrum2.tmpfiles spectrum2.conf
+
+       einstalldocs
+}

Reply via email to