# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 LUA_COMPAT=( lua5-{1..2} luajit ) PYTHON_COMPAT=( python3_{9..10} ) inherit flag-o-matic lua-single python-any-r1 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="expat +icu +idn lua test zeroconf" REQUIRED_USE=" || ( icu idn ) lua? ( ${LUA_REQUIRED_USE} ) " RDEPEND=" dev-db/sqlite:3 dev-libs/boost:= dev-libs/openssl:0= net-libs/libnatpmp net-libs/miniupnpc:= sys-libs/zlib expat? ( dev-libs/expat ) !expat? ( dev-libs/libxml2:2 ) icu? ( dev-libs/icu:= ) idn? ( net-dns/libidn:= ) lua? ( ${LUA_DEPS} ) " DEPEND=" ${RDEPEND} >=dev-util/scons-3.0.1-r3 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}"/${PN}-4.0.2-python3-compatibility.patch "${FILESDIR}"/${PN}-4.0.2-qt-5.15-compatibility.patch "${FILESDIR}"/${PN}-bind.patch ) pkg_setup() { python-any-r1_pkg_setup use lua && lua-single_pkg_setup } src_unpack() { if [[ ${PV} = "9999" ]] ; then git-r3_src_unpack fi default } src_prepare() { default # Don't include '/usr/lib*' in the link command line for `swiften-config` sed -e '/_LIBDIRFLAGS/d' -i Swiften/Config/SConscript || die # Use correct LIBDIR for Lua sed -e "s/lib/$(get_libdir)/g" -i Sluift/SConscript.variant || die # 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 rm -fr Swift Slimber || die if ! use lua; then rm -fr Sluift || die; fi if ! use zeroconf; then rm -fr Limber || die; 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 append-flags -DBOOST_BIND_GLOBAL_PLACEHOLDERS } 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="no" icu="$(usex icu)" install_git_hooks="no" # Use 'DISABLE' as an invalid lib name, so no editline lib is used, # as current version is not compatible and compilation will fail. editline_libname="DISABLE" 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="no" swiften_dll="true" swift_mobile="no" target="native" test="none" try_avahi="no" try_expat="$(usex expat)" try_gconf="no" try_libidn="$(usex idn)" try_libxml="$(usex !expat)" tls_backend="openssl" unbound="no" V="1" valgrind="no" zlib_bundled_enable="false" ) if use lua; then MYSCONS+=( lua_includedir="$(lua_get_include_dir)" lua_libdir="${EPREFIX}/usr/$(get_libdir)" lua_libname="$(basename -s '.so' $(lua_get_shared_lib))" ) fi } src_compile() { local myesconsinstall=( Swiften $(usex lua Sluift '') $(usex zeroconf Limber '') ) 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 lua "SLUIFT_DIR=${ED}/usr" '') $(usex lua "SLUIFT_INSTALLDIR=${ED}/usr" '') "${ED}" ) escons "${MYSCONS[@]}" "${myesconsinstall[@]}" use zeroconf && dobin Limber/limber einstalldocs }