From 6c3eff76fc4f4ad0697c18fb57a302de9e9e718f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20F=C3=B6rster?= Date: Sat, 12 Jan 2019 04:05:59 +0100 Subject: [PATCH] [net-im/spectrum] sync with tree --- net-im/spectrum/files/spectrum2.initd | 34 ++++++++--- net-im/spectrum/files/spectrum2.service | 12 ++++ net-im/spectrum/files/spectrum2.tmpfiles | 1 + .../spectrum/files/use_qt5_libcommuni.patch | 55 ------------------ net-im/spectrum/spectrum-9999.ebuild | 57 ++++++++++++------- 5 files changed, 74 insertions(+), 85 deletions(-) create mode 100644 net-im/spectrum/files/spectrum2.service create mode 100644 net-im/spectrum/files/spectrum2.tmpfiles delete mode 100644 net-im/spectrum/files/use_qt5_libcommuni.patch diff --git a/net-im/spectrum/files/spectrum2.initd b/net-im/spectrum/files/spectrum2.initd index 826bca2..8a35dbe 100644 --- a/net-im/spectrum/files/spectrum2.initd +++ b/net-im/spectrum/files/spectrum2.initd @@ -2,30 +2,46 @@ # Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -command="/usr/bin/${RC_SVCNAME}_manager" -command_args="start" -command_background="true" +command="/usr/bin/spectrum2_manager" command_group="spectrum" command_user="spectrum" name="Spectrum2 Transport" -pidfile="/run/${RC_SVCNAME}/${RC_SVCNAME}_manager.pid" +shell="/bin/sh" +su="/bin/su" depend() { need net } +start() { + ebegin "Starting ${name}" + "${su}" "${command_user}" -c "${command} start" -s "${shell}" + eend $? +} + start_pre() { - checkpath -d -o "${command_user}:${command_group}" -q "/run/${RC_SVCNAME}" + # 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 Spectrum2 Transport" - ${command} status + ebegin "Status ${name}" + "${su}" "${command_user}" -c "${command} status" -s "${shell}" eend $? } stop() { - ebegin "Stopping Spectrum2 Transport" - ${command} stop + ebegin "Stopping ${name}" + "${su}" "${command_user}" -c "${command} stop" -s "${shell}" eend $? } + +# Andrey Utkin (24 Nov 2018) +# Conrad Kostecki (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/spectrum/files/spectrum2.service b/net-im/spectrum/files/spectrum2.service new file mode 100644 index 0000000..9d5b723 --- /dev/null +++ b/net-im/spectrum/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/spectrum/files/spectrum2.tmpfiles b/net-im/spectrum/files/spectrum2.tmpfiles new file mode 100644 index 0000000..4ce6f1c --- /dev/null +++ b/net-im/spectrum/files/spectrum2.tmpfiles @@ -0,0 +1 @@ +d /run/spectrum2 0700 specturm spectrum - - diff --git a/net-im/spectrum/files/use_qt5_libcommuni.patch b/net-im/spectrum/files/use_qt5_libcommuni.patch deleted file mode 100644 index aa980db..0000000 --- a/net-im/spectrum/files/use_qt5_libcommuni.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- a/CMakeLists.txt 2018-02-07 11:57:43.000000000 +0100 -+++ b/CMakeLists.txt 2018-04-04 22:12:33.000000000 +0200 -@@ -200,8 +200,7 @@ - set(Communi_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") - 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) -@@ -341,7 +340,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-02-07 11:57:43.000000000 +0100 -+++ b/backends/libcommuni/CMakeLists.txt 2018-04-04 22:20:11.000000000 +0200 -@@ -1,14 +1,15 @@ - cmake_minimum_required(VERSION 2.6) -+find_package(Qt5Network REQUIRED) - 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-02-07 11:57:43.000000000 +0100 -+++ b/cmake_modules/FindCommuni.cmake 2018-04-04 22:14:07.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/spectrum/spectrum-9999.ebuild b/net-im/spectrum/spectrum-9999.ebuild index 02baa35..334de9c 100644 --- a/net-im/spectrum/spectrum-9999.ebuild +++ b/net-im/spectrum/spectrum-9999.ebuild @@ -1,9 +1,10 @@ -# Copyright 1999-2018 Gentoo Authors +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 -inherit cmake-utils user +PYTHON_COMPAT=( python2_7 ) +inherit cmake-utils python-single-r1 systemd user if [[ ${PV} = "9999" ]] ; then EGIT_REPO_URI="https://github.com/SpectrumIM/${PN}2.git" @@ -23,56 +24,64 @@ SLOT="0" IUSE="debug doc frotz irc mysql postgres purple sms +sqlite test twitter whatsapp xmpp" REQUIRED_USE="|| ( mysql postgres sqlite )" -DEPEND_RDEPEND=" +RDEPEND=" dev-libs/boost:= dev-libs/expat + dev-libs/libev:= dev-libs/log4cxx dev-libs/jsoncpp:= dev-libs/openssl:0= dev-libs/popt dev-libs/protobuf:= net-dns/libidn:0= + net-im/swift:= 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-db/postgresql:= ) - purple? ( dev-libs/glib - dev-libs/libev:= - net-im/pidgin:= ) + mysql? ( + || ( + dev-db/mariadb-connector-c + dev-db/mysql-connector-c + ) + ) + postgres? ( dev-libs/libpqxx:= ) + purple? ( + dev-libs/glib + net-im/pidgin:= + ) sms? ( app-mobilephone/smstools ) sqlite? ( dev-db/sqlite:3 ) twitter? ( net-misc/curl ) - whatsapp? ( net-im/transwhat ) - xmpp? ( net-im/swift:= )" + whatsapp? ( net-im/transwhat )" DEPEND=" - ${DEPEND_RDEPEND} + ${PYTHON_DEPS} + ${RDEPEND} doc? ( app-doc/doxygen ) - test? ( dev-util/cppunit ) + test? ( + dev-python/sleekxmpp[${PYTHON_USEDEP}] + dev-util/cppunit + net-irc/ngircd + ) " -RDEPEND="${DEPEND_BOTH}" - PATCHES=( "${FILESDIR}/remove_debug_cflags.patch" - "${FILESDIR}/use_qt5_libcommuni.patch" ) 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 + # Respect users CFLAGS, when compiling for debug mode cmake-utils_src_prepare } @@ -97,14 +106,20 @@ src_configure() { cmake-utils_src_configure } +src_test() { + cd tests/libtransport && "${EPYTHON}" ../start.py || die +} + src_install() { cmake-utils_src_install - einstalldocs - 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 }