Install this version:
emerge -a =net-im/tkabber-9999
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =net-im/tkabber-9999
Or alternatively:
emerge --autounmask-write -a =net-im/tkabber-9999
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 9999 | 8 | 0 |
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit fossil desktop
DESCRIPTION="GUI client for XMPP (Jabber) instant messaging protocol, written in Tcl/Tk."
HOMEPAGE="http://tkabber.jabber.ru/"
RDEPEND="
>=dev-lang/tcl-8.5
>=dev-lang/tk-8.5
>=dev-tcltk/tcllib-1.6
>=dev-tcltk/bwidget-1.3
gpg? ( dev-tcltk/tclgpg )
ssl? ( >=dev-tcltk/tls-1.4.1 )
sound? ( dev-tcltk/snack )
trayicon? ( >=dev-tcltk/tktray-1.1 )
tkimg? ( >=dev-tcltk/tkimg-1.4.6 )
udp? ( dev-tcltk/tcludp )
!minimal? (
dev-tcltk/tdom
dev-tcltk/tclx
dev-tcltk/critcl
)
"
DEPEND="${DEPEND}
doc? ( app-text/xml2rfc )"
LICENSE="GPL-2"
SLOT="0"
IUSE="contrib gpg +doc examples plugins 3rd-party-plugins ssl sound tkimg trayicon +udp vanilla fix-site-plugins-path remote-controlling minimal"
OFFICIAL_TKABBER_PLUGINS_DIR="${S}/plugins/official"
THIRD_PARTY_TKABBER_PLUGINS_DIR="${S}/plugins/3rd-party"
TKABBER_SITE_PLUGINS="/usr/share/tkabber/site-plugins"
INCOMPATIBLE_PLUGINS="pluginmanager"
TKIMG_DEPENDENT_PLUGINS="alarm vimage"
src_unpack() {
fossil_fetch 'https://chiselapp.com/user/sgolovan/repository/tkabber' tkabber
fossil_fetch 'https://chiselapp.com/user/sgolovan/repository/tclxmpp' tkabber/tclxmpp
if use plugins; then
fossil_fetch 'https://chiselapp.com/user/sgolovan/repository/tkabber-plugins' plugins/official
fi
if use 3rd-party-plugins; then
fossil_fetch 'https://chiselapp.com/user/sgolovan/repository/tkabber-contrib' plugins/3rd-party
fi
}
src_prepare() {
if use vanilla; then
return
fi
# Fix default official and third party plugins directory
if use fix-site-plugins-path; then
cd "${S}/tkabber" || die "Can't chdir to ${S}/tkabber"
eapply "${FILESDIR}/tkabber.tcl.site.plugins.patch"
sed -i -e 's#TKABBER_SITE_PLUGINS_PATH_PLACEHOLDER#'"${TKABBER_SITE_PLUGINS}"'#' \
tkabber.tcl || die "Failed to fix default site plugins path in tkabber.tcl"
fi
default
}
src_compile() {
if use 3rd-party-plugins && has vimage ${TKABBER_PLUGINS}; then
cd "${THIRD_PARTY_TKABBER_PLUGINS_DIR}/vimage/lib/tkImageTools" \
|| die "Cannot cd to tkImageTools"
# Replace hardcoded tcl version
if has_version ">=dev-lang/tcl-8.6"; then
sed -i -e 's/MINOR_VERSION = 5/MINOR_VERSION = 6/' Makefile \
|| die "Cannot patch tkImageTools Makefile"
fi
emake
fi
}
src_install() {
insinto "/usr/share/${PN}"
cd "${S}/tkabber/" || die "Can't chdir to ${S}/tkabber/"
local x
local DOCSDIRS="doc examples contrib"
for x in *; do
if [[ -d "${x}" ]] ; then
if ! has "${x}" ${DOCSDIRS} ; then
doins -r "${x}"
fi
fi
done
sed -i -e 's#\[fullpath ChangeLog\]#"/usr/share/doc/'"$PF"'/ChangeLog"#' tkabber.tcl \
|| die "Failed to fix Changelog fullpath in tkabber.tcl"
doins *.tcl
emake DESTDIR="${D}" PREFIX="/usr" install-bin
if use doc ; then
emake DESTDIR="${D}" PREFIX="/usr" DOCDIR="/usr/share/doc/${PF}" install-doc
fi
if use examples ; then
emake DESTDIR="${D}" PREFIX="/usr" DOCDIR="/usr/share/doc/${PF}" install-examples
fi
if use contrib ; then
insinto "/usr/share/doc/${PF}"
doins -r contrib
fi
doicon "${FILESDIR}/${PN}.png"
make_desktop_entry ${PN} Tkabber
if use plugins || use 3rd-party-plugins; then
TKABBER_PLUGINS="${TKABBER_PLUGINS:-}"
if use plugins; then
local EXISTING_OFFICIAL_TKABBER_PLUGINS="$(dirlist "${OFFICIAL_TKABBER_PLUGINS_DIR}")"
fi
if use 3rd-party-plugins; then
local EXISTING_THIRD_PARTY_TKABBER_PLUGINS="$(dirlist "${THIRD_PARTY_TKABBER_PLUGINS_DIR}")"
fi
cd "${S}" || die "Can't chdir to ${S}"
plugins_verify \
$(use plugins && echo official) \
$(use 3rd-party-plugins && echo 3rd-party)
if use plugins; then
plugins_install official \
|| die "Failed to install official plugins"
fi
if use 3rd-party-plugins; then
plugins_install 3rd-party \
|| die "Failed to install 3rd-party plugins"
fi
cd "${OFFICIAL_TKABBER_PLUGINS_DIR}" \
|| die "Can't chdir to ${OFFICIAL_TKABBER_PLUGINS_DIR}"
newdoc README README.plugins
newdoc ChangeLog ChangeLog.plugins
fi
# Remove the fucking stupid shit
use vanilla || rm -rf "$D/usr/share/tkabber/plugins/chat/shuffle.tcl" "$D/usr/share/tkabber/site-plugins/flip" || die
# Remove the server trust (XEP-0146 support)
use remote-controlling || rm -rf "$D/usr/share/tkabber/plugins/general/remote.tcl" || die
}
pkg_postinst() {
einfo "By default tkabber uses an internal XML parser. You may want"
einfo "to use an external one for (dubious) performance reasons,"
einfo "in which case you may like to emerge dev-tcltk/tdom (and put"
einfo "\"package require tdom\" in your ~/.tkabber/config.tcl)."
einfo
einfo "You may also optionally emerge dev-tcltk/tclx to theoretically"
einfo "speed some other of tkabber's pure-Tcl operations up,"
einfo "as you'd get them written in C. Real performance gains are"
einfo "subject to further tests."
einfo
if ! use tkimg; then
ewarn "dev-tcltk/tkimg adds support for PNG and JPG images, such as avatars,"
ewarn "photos, non-default emoticons, etc. Some plugins, for example the"
ewarn "\"alarm\" plugin may not function correctly without dev-tcltk/tkimg"
ewarn
fi
plugins_inform
}
# Getting list of directories in current or specified by argument directory.
dirlist() {
local i
local OUTPUT
local TARGET_DIR
if [[ -n "${1}" ]]; then
[[ -d ${1} ]] || die "${1} directory not found"
TARGET_DIR="${1}/"
fi
for i in ${TARGET_DIR}*; do
[[ -d "${i}" ]] && OUTPUT="${OUTPUT} $(basename ${i})"
done
echo ${OUTPUT}
}
plugins_verify() {
local PLUGINS
local ABSENT_PLUGINS
local DEPENDENT_PLUGINS
local i
AVAILABLE_PLUGINS=""
until [ -z "$1" ] ; do
case "${1}" in
official)
AVAILABLE_PLUGINS="${AVAILABLE_PLUGINS} ${EXISTING_OFFICIAL_TKABBER_PLUGINS}"
;;
3rd-party)
fix_existing_third_party_tkabber_plugins
AVAILABLE_PLUGINS="${AVAILABLE_PLUGINS} ${EXISTING_THIRD_PARTY_TKABBER_PLUGINS}"
;;
*)
die "$0: wrong argument"
;;
esac
shift
done
# Verifying plugins existence.
if [[ -n "$TKABBER_PLUGINS" ]]; then
PLUGINS=( ${TKABBER_PLUGINS} )
TKABBER_PLUGINS=""
for i in "${PLUGINS[@]}"; do
if has "${i}" ${AVAILABLE_PLUGINS}; then
TKABBER_PLUGINS="${TKABBER_PLUGINS} ${i}"
else
ABSENT_PLUGINS="${ABSENT_PLUGINS} ${i}"
fi
done
if [[ -n "${ABSENT_PLUGINS}" ]]; then
ewarn
ewarn "Following plugins specified in the TKABBER_PLUGINS environment variable"
ewarn "are not present in the svn repositories:"
ewarn
ewarn "${ABSENT_PLUGINS}"
ewarn
fi
fi
if ! use tkimg; then
PLUGINS=( ${TKABBER_PLUGINS:-${AVAILABLE_PLUGINS}} )
for i in "${PLUGINS[@]}"; do
if has "${i}" ${TKIMG_DEPENDENT_PLUGINS}; then
DEPENDENT_PLUGINS="${DEPENDENT_PLUGINS} ${i}"
fi
done
if [[ -n "${DEPENDENT_PLUGINS}" ]]; then
eerror
eerror "The \"tkimg\" USE-flag is not enabled, but the following plugins depend on dev-tcltk/tkimg:"
eerror
eerror "${DEPENDENT_PLUGINS}"
eerror
eerror "Please activate the \"tkimg\" USE-flag before installing these plugins"
eerror
die "\"tkimg\" USE-flag required, but not enabled."
fi
fi
}
plugins_inform() {
if ! use plugins && ! use 3rd-party-plugins; then
return
fi
if [[ -z "${TKABBER_PLUGINS}" ]]; then
einfo "You selected to install plugins via the plugins and/or 3rd-party-plugins"
einfo "USE variables. Please note, that if you wish to install only particular"
einfo "plugins from all available ones, you need to specify them in the"
einfo "TKABBER_PLUGINS variable in make.conf."
einfo
einfo "Currently the following plugins are available:"
einfo
einfo "${AVAILABLE_PLUGINS}"
einfo
fi
}
plugins_install() {
insinto "${TKABBER_SITE_PLUGINS}"
local PLUGINS
local EXISTING_PLUGINS
local PLUGINS_DIR
case "${1}" in
official)
EXISTING_PLUGINS="${EXISTING_OFFICIAL_TKABBER_PLUGINS}"
PLUGINS_DIR="${OFFICIAL_TKABBER_PLUGINS_DIR}"
;;
3rd-party)
EXISTING_PLUGINS="${EXISTING_THIRD_PARTY_TKABBER_PLUGINS}"
PLUGINS_DIR="${THIRD_PARTY_TKABBER_PLUGINS_DIR}"
;;
*)
die "$0: wrong argument"
;;
esac
PLUGINS=( ${TKABBER_PLUGINS:-${EXISTING_PLUGINS}} )
[[ -d "${D}/${TKABBER_SITE_PLUGINS}" ]] || mkdir "${D}/${TKABBER_SITE_PLUGINS}"
for i in "${PLUGINS[@]}"; do
if has "${i}" ${EXISTING_PLUGINS}; then
doins -r "${PLUGINS_DIR}/${i}"
fi
done
}
# Fixing EXISTING_THIRD_PARTY_TKABBER_PLUGINS for avoiding collision of same plugins
# from different svn repositories and installation unix-incompatible plugins.
fix_existing_third_party_tkabber_plugins() {
local PLUGINS=( ${EXISTING_THIRD_PARTY_TKABBER_PLUGINS} )
local CONFLICTING_PLUGINS
EXISTING_THIRD_PARTY_TKABBER_PLUGINS=""
for i in "${PLUGINS[@]}"; do
if ! has "${i}" ${EXISTING_OFFICIAL_TKABBER_PLUGINS}; then
if ! has "${i}" ${INCOMPATIBLE_PLUGINS}; then
EXISTING_THIRD_PARTY_TKABBER_PLUGINS="${EXISTING_THIRD_PARTY_TKABBER_PLUGINS} ${i}"
fi
else
CONFLICTING_PLUGINS="${CONFLICTING_PLUGINS} ${i}"
fi
done
if [[ -n "${CONFLICTING_PLUGINS}" ]]; then
ewarn
ewarn "Repositories have the following plugins duplicated,"
ewarn "official versions of this plugins will be prefered:"
ewarn "${CONFLICTING_PLUGINS}"
ewarn
fi
}
Manage flags for this package:
euse -i <flag> -p net-im/tkabber |
euse -E <flag> -p net-im/tkabber |
euse -D <flag> -p net-im/tkabber
doc? ( app-text/xml2rfc )
>=dev-lang/tcl-8.5 >=dev-lang/tk-8.5 >=dev-tcltk/tcllib-1.6 >=dev-tcltk/bwidget-1.3 gpg? ( dev-tcltk/tclgpg ) ssl? ( >=dev-tcltk/tls-1.4.1 ) sound? ( dev-tcltk/snack ) trayicon? ( >=dev-tcltk/tktray-1.1 ) tkimg? ( >=dev-tcltk/tkimg-1.4.6 ) udp? ( dev-tcltk/tcludp ) !minimal? ( dev-tcltk/tdom dev-tcltk/tclx dev-tcltk/critcl )