# 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/" if [[ ${PV} = "9999" ]] ; then EGIT_REPO_URI="https://github.com/${PN}/${PN}.git" EGIT_BRANCH="swift-4.x" inherit git-r3 KEYWORDS="" else RESTRICT="mirror" SRC_URI="https://swift.im/downloads/releases/${P}/${P}.tar.gz" KEYWORDS="~amd64 ~x86" fi LICENSE="BSD BSD-1 CC-BY-3.0 GPL-3 OFL-1.1" SLOT="4/0" 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" ) 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 }