You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging-gentoo/eclass/kde-functions.eclass

707 lines
23 KiB

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/kde-functions.eclass,v 1.175 2009/11/01 20:26:34 abcd Exp $
# @ECLASS: kde-functions.eclass
# @MAINTAINER:
# kde@gentoo.org
# Original author Dan Armak <danarmak@gentoo.org>
#
# @BLURB: This contains everything except things that modify ebuild variables and
# @DESCRIPTION:
# This contains everything except things that modify ebuild variables
# and functions (e.g. $P, src_compile() etc.)
inherit qt3 eutils
# map of the monolithic->split ebuild derivation; used to build deps describing
# the relationships between them
KDE_DERIVATION_MAP='
kde-base/kdeaccessibility kde-base/kbstateapplet
kde-base/kdeaccessibility kde-base/kdeaccessibility-iconthemes
kde-base/kdeaccessibility kde-base/kmag
kde-base/kdeaccessibility kde-base/kmousetool
kde-base/kdeaccessibility kde-base/kmouth
kde-base/kdeaccessibility kde-base/kttsd
kde-base/kdeaccessibility kde-base/ksayit
kde-base/kdeaddons kde-base/atlantikdesigner
kde-base/kdeaddons kde-base/kaddressbook-plugins
kde-base/kdeaddons kde-base/kate-plugins
kde-base/kdeaddons kde-base/kdeaddons-docs-konq-plugins
kde-base/kdeaddons kde-base/kdeaddons-kfile-plugins
kde-base/kdeaddons kde-base/kicker-applets
kde-base/kdeaddons kde-base/knewsticker-scripts
kde-base/kdeaddons kde-base/konq-plugins
kde-base/kdeaddons kde-base/konqueror-akregator
kde-base/kdeaddons kde-base/ksig
kde-base/kdeaddons kde-base/noatun-plugins
kde-base/kdeaddons kde-base/renamedlg-audio
kde-base/kdeaddons kde-base/renamedlg-images
kde-base/kdeadmin kde-base/kcron
kde-base/kdeadmin kde-base/kdat
kde-base/kdeadmin kde-base/kdeadmin-kfile-plugins
kde-base/kdeadmin kde-base/knetworkconf
kde-base/kdeadmin kde-base/kpackage
kde-base/kdeadmin kde-base/ksysv
kde-base/kdeadmin kde-base/kuser
kde-base/kdeadmin kde-base/lilo-config
kde-base/kdeadmin kde-base/secpolicy
kde-base/kdeartwork kde-base/kdeartwork-emoticons
kde-base/kdeartwork kde-base/kdeartwork-icewm-themes
kde-base/kdeartwork kde-base/kdeartwork-iconthemes
kde-base/kdeartwork kde-base/kdeartwork-kscreensaver
kde-base/kdeartwork kde-base/kdeartwork-kwin-styles
kde-base/kdeartwork kde-base/kdeartwork-kworldclock
kde-base/kdeartwork kde-base/kdeartwork-kworldwatch
kde-base/kdeartwork kde-base/kdeartwork-sounds
kde-base/kdeartwork kde-base/kdeartwork-styles
kde-base/kdeartwork kde-base/kdeartwork-wallpapers
kde-base/kdebase kde-base/drkonqi
kde-base/kdebase kde-base/kappfinder
kde-base/kdebase kde-base/kate
kde-base/kdebase kde-base/kcheckpass
kde-base/kdebase kde-base/kcminit
kde-base/kdebase kde-base/kcontrol
kde-base/kdebase kde-base/kdcop
kde-base/kdebase kde-base/kdebase-data
kde-base/kdebase kde-base/kdebase-kioslaves
kde-base/kdebase kde-base/kdebase-startkde
kde-base/kdebase kde-base/kdebugdialog
kde-base/kdebase kde-base/kdepasswd
kde-base/kdebase kde-base/kdeprint
kde-base/kdebase kde-base/kdesktop
kde-base/kdebase kde-base/kdesu
kde-base/kdebase kde-base/kdialog
kde-base/kdebase kde-base/kdm
kde-base/kdebase kde-base/kfind
kde-base/kdebase kde-base/khelpcenter
kde-base/kdebase kde-base/khotkeys
kde-base/kdebase kde-base/kicker
kde-base/kdebase kde-base/klipper
kde-base/kdebase kde-base/kmenuedit
kde-base/kdebase kde-base/knetattach
kde-base/kdebase kde-base/konqueror
kde-base/kdebase kde-base/konsole
kde-base/kdebase kde-base/kpager
kde-base/kdebase kde-base/kpersonalizer
kde-base/kdebase kde-base/kreadconfig
kde-base/kdebase kde-base/kscreensaver
kde-base/kdebase kde-base/ksmserver
kde-base/kdebase kde-base/ksplashml
kde-base/kdebase kde-base/kstart
kde-base/kdebase kde-base/ksysguard
kde-base/kdebase kde-base/ksystraycmd
kde-base/kdebase kde-base/ktip
kde-base/kdebase kde-base/kwin
kde-base/kdebase kde-base/kxkb
kde-base/kdebase kde-base/libkonq
kde-base/kdebase kde-base/nsplugins
kde-base/kdebindings kde-base/dcopc
kde-base/kdebindings kde-base/dcopjava
kde-base/kdebindings kde-base/dcopperl
kde-base/kdebindings kde-base/dcoppython
kde-base/kdebindings kde-base/kalyptus
kde-base/kdebindings kde-base/kdejava
kde-base/kdebindings kde-base/kjsembed
kde-base/kdebindings kde-base/korundum
kde-base/kdebindings kde-base/pykde
kde-base/kdebindings kde-base/qtjava
kde-base/kdebindings kde-base/qtruby
kde-base/kdebindings kde-base/qtsharp
kde-base/kdebindings kde-base/smoke
kde-base/kdebindings kde-base/xparts
kde-base/kdeedu kde-base/blinken
kde-base/kdeedu kde-base/kalzium
kde-base/kdeedu kde-base/kanagram
kde-base/kdeedu kde-base/kbruch
kde-base/kdeedu kde-base/kdeedu-applnk
kde-base/kdeedu kde-base/keduca
kde-base/kdeedu kde-base/kgeography
kde-base/kdeedu kde-base/khangman
kde-base/kdeedu kde-base/kig
kde-base/kdeedu kde-base/kiten
kde-base/kdeedu kde-base/klatin
kde-base/kdeedu kde-base/klettres
kde-base/kdeedu kde-base/kmathtool
kde-base/kdeedu kde-base/kmessedwords
kde-base/kdeedu kde-base/kmplot
kde-base/kdeedu kde-base/kpercentage
kde-base/kdeedu kde-base/kstars
kde-base/kdeedu kde-base/ktouch
kde-base/kdeedu kde-base/kturtle
kde-base/kdeedu kde-base/kverbos
kde-base/kdeedu kde-base/kvoctrain
kde-base/kdeedu kde-base/kwordquiz
kde-base/kdeedu kde-base/libkdeedu
kde-base/kdegames kde-base/atlantik
kde-base/kdegames kde-base/kasteroids
kde-base/kdegames kde-base/katomic
kde-base/kdegames kde-base/kbackgammon
kde-base/kdegames kde-base/kbattleship
kde-base/kdegames kde-base/kblackbox
kde-base/kdegames kde-base/kbounce
kde-base/kdegames kde-base/kenolaba
kde-base/kdegames kde-base/kfouleggs
kde-base/kdegames kde-base/kgoldrunner
kde-base/kdegames kde-base/kjumpingcube
kde-base/kdegames kde-base/klickety
kde-base/kdegames kde-base/klines
kde-base/kdegames kde-base/kmahjongg
kde-base/kdegames kde-base/kmines
kde-base/kdegames kde-base/knetwalk
kde-base/kdegames kde-base/kolf
kde-base/kdegames kde-base/konquest
kde-base/kdegames kde-base/kpat
kde-base/kdegames kde-base/kpoker
kde-base/kdegames kde-base/kreversi
kde-base/kdegames kde-base/ksame
kde-base/kdegames kde-base/kshisen
kde-base/kdegames kde-base/ksirtet
kde-base/kdegames kde-base/ksmiletris
kde-base/kdegames kde-base/ksnake
kde-base/kdegames kde-base/ksokoban
kde-base/kdegames kde-base/kspaceduel
kde-base/kdegames kde-base/ktron
kde-base/kdegames kde-base/ktuberling
kde-base/kdegames kde-base/kwin4
kde-base/kdegames kde-base/libkdegames
kde-base/kdegames kde-base/libksirtet
kde-base/kdegames kde-base/lskat
kde-base/kdegraphics kde-base/kamera
kde-base/kdegraphics kde-base/kcoloredit
kde-base/kdegraphics kde-base/kdegraphics-kfile-plugins
kde-base/kdegraphics kde-base/kdvi
kde-base/kdegraphics kde-base/kfax
kde-base/kdegraphics kde-base/kgamma
kde-base/kdegraphics kde-base/kghostview
kde-base/kdegraphics kde-base/kiconedit
kde-base/kdegraphics kde-base/kmrml
kde-base/kdegraphics kde-base/kolourpaint
kde-base/kdegraphics kde-base/kooka
kde-base/kdegraphics kde-base/kpdf
kde-base/kdegraphics kde-base/kpovmodeler
kde-base/kdegraphics kde-base/kruler
kde-base/kdegraphics kde-base/ksnapshot
kde-base/kdegraphics kde-base/ksvg
kde-base/kdegraphics kde-base/kuickshow
kde-base/kdegraphics kde-base/kview
kde-base/kdegraphics kde-base/kviewshell
kde-base/kdegraphics kde-base/libkscan
kde-base/kdemultimedia kde-base/akode
kde-base/kdemultimedia kde-base/artsplugin-akode
kde-base/kdemultimedia kde-base/artsplugin-audiofile
kde-base/kdemultimedia kde-base/artsplugin-mpeglib
kde-base/kdemultimedia kde-base/artsplugin-mpg123
kde-base/kdemultimedia kde-base/artsplugin-xine
kde-base/kdemultimedia kde-base/juk
kde-base/kdemultimedia kde-base/kaboodle
kde-base/kdemultimedia kde-base/kaudiocreator
kde-base/kdemultimedia kde-base/kdemultimedia-arts
kde-base/kdemultimedia kde-base/kdemultimedia-kappfinder-data
kde-base/kdemultimedia kde-base/kdemultimedia-kfile-plugins
kde-base/kdemultimedia kde-base/kdemultimedia-kioslaves
kde-base/kdemultimedia kde-base/kmid
kde-base/kdemultimedia kde-base/kmix
kde-base/kdemultimedia kde-base/krec
kde-base/kdemultimedia kde-base/kscd
kde-base/kdemultimedia kde-base/libkcddb
kde-base/kdemultimedia kde-base/mpeglib
kde-base/kdemultimedia kde-base/noatun
kde-base/kdenetwork kde-base/dcoprss
kde-base/kdenetwork kde-base/kdenetwork-filesharing
kde-base/kdenetwork kde-base/kdenetwork-kfile-plugins
kde-base/kdenetwork kde-base/kdict
kde-base/kdenetwork kde-base/kdnssd
kde-base/kdenetwork kde-base/kget
kde-base/kdenetwork kde-base/knewsticker
kde-base/kdenetwork kde-base/kopete
kde-base/kdenetwork kde-base/kpf
kde-base/kdenetwork kde-base/kppp
kde-base/kdenetwork kde-base/krdc
kde-base/kdenetwork kde-base/krfb
kde-base/kdenetwork kde-base/ksirc
kde-base/kdenetwork kde-base/ktalkd
kde-base/kdenetwork kde-base/kwifimanager
kde-base/kdenetwork kde-base/librss
kde-base/kdenetwork kde-base/lisa
kde-base/kdepim kde-base/akregator
kde-base/kdepim kde-base/certmanager
kde-base/kdepim kde-base/kaddressbook
kde-base/kdepim kde-base/kalarm
kde-base/kdepim kde-base/kandy
kde-base/kdepim kde-base/karm
kde-base/kdepim kde-base/kdepim-kioslaves
kde-base/kdepim kde-base/kdepim-kresources
kde-base/kdepim kde-base/kdepim-wizards
kde-base/kdepim kde-base/kitchensync
kde-base/kdepim kde-base/kmail
kde-base/kdepim kde-base/kmailcvt
kde-base/kdepim kde-base/knode
kde-base/kdepim kde-base/knotes
kde-base/kdepim kde-base/kode
kde-base/kdepim kde-base/konsolekalendar
kde-base/kdepim kde-base/kontact
kde-base/kdepim kde-base/kontact-specialdates
kde-base/kdepim kde-base/korganizer
kde-base/kdepim kde-base/korn
kde-base/kdepim kde-base/kpilot
kde-base/kdepim kde-base/ksync
kde-base/kdepim kde-base/ktnef
kde-base/kdepim kde-base/libkcal
kde-base/kdepim kde-base/libkdenetwork
kde-base/kdepim kde-base/libkdepim
kde-base/kdepim kde-base/libkholidays
kde-base/kdepim kde-base/libkmime
kde-base/kdepim kde-base/libkpgp
kde-base/kdepim kde-base/libkpimexchange
kde-base/kdepim kde-base/libkpimidentities
kde-base/kdepim kde-base/libksieve
kde-base/kdepim kde-base/mimelib
kde-base/kdepim kde-base/networkstatus
kde-base/kdesdk kde-base/cervisia
kde-base/kdesdk kde-base/kapptemplate
kde-base/kdesdk kde-base/kbabel
kde-base/kdesdk kde-base/kbugbuster
kde-base/kdesdk kde-base/kcachegrind
kde-base/kdesdk kde-base/kdesdk-kfile-plugins
kde-base/kdesdk kde-base/kdesdk-kioslaves
kde-base/kdesdk kde-base/kdesdk-misc
kde-base/kdesdk kde-base/kdesdk-scripts
kde-base/kdesdk kde-base/kmtrace
kde-base/kdesdk kde-base/kompare
kde-base/kdesdk kde-base/kspy
kde-base/kdesdk kde-base/kuiviewer
kde-base/kdesdk kde-base/umbrello
kde-base/kdetoys kde-base/amor
kde-base/kdetoys kde-base/eyesapplet
kde-base/kdetoys kde-base/fifteenapplet
kde-base/kdetoys kde-base/kmoon
kde-base/kdetoys kde-base/kodo
kde-base/kdetoys kde-base/kteatime
kde-base/kdetoys kde-base/ktux
kde-base/kdetoys kde-base/kweather
kde-base/kdetoys kde-base/kworldclock
kde-base/kdetoys kde-base/kworldwatch
kde-base/kdeutils kde-base/ark
kde-base/kdeutils kde-base/kcalc
kde-base/kdeutils kde-base/kcharselect
kde-base/kdeutils kde-base/kdelirc
kde-base/kdeutils kde-base/kdf
kde-base/kdeutils kde-base/kedit
kde-base/kdeutils kde-base/kfloppy
kde-base/kdeutils kde-base/kgpg
kde-base/kdeutils kde-base/khexedit
kde-base/kdeutils kde-base/kjots
kde-base/kdeutils kde-base/klaptopdaemon
kde-base/kdeutils kde-base/kmilo
kde-base/kdeutils kde-base/kregexpeditor
kde-base/kdeutils kde-base/ksim
kde-base/kdeutils kde-base/ktimer
kde-base/kdeutils kde-base/kwalletmanager
kde-base/kdeutils kde-base/superkaramba
kde-base/kdewebdev kde-base/kfilereplace
kde-base/kdewebdev kde-base/kimagemapeditor
kde-base/kdewebdev kde-base/klinkstatus
kde-base/kdewebdev kde-base/kommander
kde-base/kdewebdev kde-base/kxsldbg
kde-base/kdewebdev kde-base/quanta
app-office/koffice app-office/karbon
app-office/koffice app-office/kchart
app-office/koffice app-office/kexi
app-office/koffice app-office/kformula
app-office/koffice app-office/kivio
app-office/koffice app-office/koffice-data
app-office/koffice app-office/koffice-libs
app-office/koffice app-office/koffice-meta
app-office/koffice app-office/koshell
app-office/koffice app-office/kplato
app-office/koffice app-office/kpresenter
app-office/koffice app-office/krita
app-office/koffice app-office/kspread
app-office/koffice app-office/kugar
app-office/koffice app-office/kword
'
# @FUNCTION: get-parent-package
# @USAGE: < name of split-ebuild >
# @DESCRIPTION:
# accepts 1 parameter, the name of a split ebuild; echoes the name of its mother package
get-parent-package() {
local parent child
while read parent child; do
if [[ ${child} == $1 ]]; then
echo ${parent}
return 0
fi
done <<EOF
$KDE_DERIVATION_MAP
EOF
die "Package $1 not found in KDE_DERIVATION_MAP, please report bug"
}
# @FUNCTION: get-child-packages
# @USAGE: < name of monolithic package >
# @DESCRIPTION:
# accepts 1 parameter, the name of a monolithic package; echoes the names of all ebuilds derived from it
get-child-packages() {
local parent child
while read parent child; do
[[ ${parent} == $1 ]] && echo -n "${child} "
done <<EOF
$KDE_DERIVATION_MAP
EOF
}
# @FUNCTION: is-parent-package
# @USAGE: < name >
# @RETURN: 0 if <name> is a parent package, otherwise 1
is-parent-package() {
local parent child
while read parent child; do
[[ "${parent}" == "$1" ]] && return 0
done <<EOF
$KDE_DERIVATION_MAP
EOF
return 1
}
# ---------------------------------------------------------------
# kde/qt directory management etc. functions, was kde-dirs.ebuild
# ---------------------------------------------------------------
# @FUNCTION: need-kde-at-least
# @USAGE: < version >
# @DESCRIPTION:
# Sets the correct DEPEND and RDEPEND for the needed minimum kde < version >. Also takes
# care of the correct Qt-version and correct RDEPEND handling.
need-kde-at-least() {
debug-print-function $FUNCNAME "$@"
KDEVER="$1"
# determine install locations
set-kdedir ${KDEVER}
if [[ "${RDEPEND-unset}" != "unset" ]]; then
x_DEPEND="${RDEPEND}"
else
x_DEPEND="${DEPEND}"
fi
DEPEND="${DEPEND} >=kde-base/kdelibs-$KDEVER"
RDEPEND="${x_DEPEND} >=kde-base/kdelibs-$KDEVER"
qtver-from-kdever ${KDEVER}
need-qt ${selected_version}
if [[ -n "${KDEBASE}" ]]; then
SLOT="$KDEMAJORVER.$KDEMINORVER"
else
: ${SLOT="0"}
fi
}
# ---------------------------------------------------------------
# kde/qt directory management etc. functions, was kde-dirs.ebuild
# ---------------------------------------------------------------
# @FUNCTION: need-kde
# @USAGE: < version >
# @DESCRIPTION:
# Sets the correct DEPEND and RDEPEND for the needed kde < version >. Also takes
# care of the correct Qt-version and correct RDEPEND handling.
need-kde() {
debug-print-function $FUNCNAME "$@"
KDEVER="$1"
# determine install locations
set-kdedir ${KDEVER}
if [[ "${RDEPEND-unset}" != "unset" ]]; then
x_DEPEND="${RDEPEND}"
else
x_DEPEND="${DEPEND}"
fi
if [[ -n "${KDEBASE}" ]]; then
# If we're a kde-base package, we need at least our own version of kdelibs.
# Note: we only set RDEPEND if it is already set, otherwise
# we break packages relying on portage copying RDEPEND from DEPEND.
DEPEND="${DEPEND} ~kde-base/kdelibs-$PV"
RDEPEND="${x_DEPEND} ~kde-base/kdelibs-${PV}"
else
# Things outside kde-base need a minimum version,
# but kde-base/kdelibs:kde-4 mustn't satisfy it.
min-kde-ver ${KDEVER}
DEPEND="${DEPEND} =kde-base/kdelibs-3.5*"
RDEPEND="${x_DEPEND} =kde-base/kdelibs-3.5*"
fi
qtver-from-kdever ${KDEVER}
need-qt ${selected_version}
if [[ -n "${KDEBASE}" ]]; then
SLOT="$KDEMAJORVER.$KDEMINORVER"
else
: ${SLOT="0"}
fi
}
# @FUNCTION: set-kdedir
# @USAGE: < version >
# @DESCRIPTION:
# Sets the right directories for the kde <version> wrt what kind of package will
# be installed, e. g. third-party-apps, kde-base-packages, ...
set-kdedir() {
debug-print-function $FUNCNAME "$@"
# set install location:
# - 3rd party apps go into /usr, and have SLOT="0".
# - kde-base category ebuilds go into /usr/kde/$MAJORVER.$MINORVER,
# and have SLOT="$MAJORVER.$MINORVER".
# - kde-base category cvs ebuilds have major version 5 and go into
# /usr/kde/cvs; they have SLOT="cvs".
# - Backward-compatibility exceptions: all kde2 packages (kde-base or otherwise)
# go into /usr/kde/2. kde 3.0.x goes into /usr/kde/3 (and not 3.0).
# - kde-base category ebuilds always depend on their exact matching version of
# kdelibs and link against it. Other ebuilds link aginst the latest one found.
# - This function exports $PREFIX (location to install to) and $KDEDIR
# (location of kdelibs to link against) for all ebuilds.
#
# -- Overrides - deprecated but working for now: --
# - If $KDEPREFIX is defined (in the profile or env), it overrides everything
# and both base and 3rd party kde stuff goes in there.
# - If $KDELIBSDIR is defined, the kdelibs installed in that location will be
# used, even by kde-base packages.
# get version elements
IFSBACKUP="$IFS"
IFS=".-_"
for x in $1; do
if [[ -z "$KDEMAJORVER" ]]; then KDEMAJORVER=$x
else if [[ -z "$KDEMINORVER" ]]; then KDEMINORVER=$x
else if [[ -z "$KDEREVISION" ]]; then KDEREVISION=$x
fi; fi; fi
done
[[ -z "$KDEMINORVER" ]] && KDEMINORVER="0"
[[ -z "$KDEREVISION" ]] && KDEREVISION="0"
IFS="$IFSBACKUP"
debug-print "$FUNCNAME: version breakup: KDEMAJORVER=$KDEMAJORVER KDEMINORVER=$KDEMINORVER KDEREVISION=$KDEREVISION"
# install prefix
if [[ -n "$KDEPREFIX" ]]; then
export PREFIX="$KDEPREFIX"
else
if [[ -z "$KDEBASE" ]]; then
PREFIX="/usr/kde/3.5"
else
case $KDEMAJORVER.$KDEMINORVER in
3*) export PREFIX="/usr/kde/3.5";;
5.0) export PREFIX="/usr/kde/svn";;
*) die "failed to set PREFIX";;
esac
fi
fi
# kdelibs location
if [[ -n "$KDELIBSDIR" ]]; then
export KDEDIR="$KDELIBSDIR"
else
if [[ -z "$KDEBASE" ]]; then
# find the latest kdelibs installed
for x in /usr/kde/{svn,3.5} "${PREFIX}" \
"${KDE3LIBSDIR}" "${KDELIBSDIR}" "${KDE3DIR}" "${KDEDIR}" /usr/kde/*; do
if [[ -f "${x}/include/kwin.h" ]]; then
debug-print found
export KDEDIR="$x"
break
fi
done
else
# kde-base ebuilds must always use the exact version of kdelibs they came with
case $KDEMAJORVER.$KDEMINORVER in
3*) export KDEDIR="/usr/kde/3.5";;
5.0) export KDEDIR="/usr/kde/svn";;
*) die "failed to set KDEDIR";;
esac
fi
fi
debug-print "$FUNCNAME: Will use the kdelibs installed in $KDEDIR, and install into $PREFIX."
}
# @FUNCTION: need-qt
# @USAGE: < version >
# @DESCRIPTION:
# Sets the DEPEND and RDEPEND for Qt <version>.
need-qt() {
debug-print-function $FUNCNAME "${@}"
QTVER="$1"
QT=qt
if [[ "${RDEPEND-unset}" != "unset" ]]; then
x_DEPEND="${RDEPEND}"
else
x_DEPEND="${DEPEND}"
fi
case ${QTVER} in
3*) DEPEND="${DEPEND} =dev-qt/qt-meta-3*"
RDEPEND="${RDEPEND} =dev-qt/qt-meta-3*"
;;
*) echo "!!! error: $FUNCNAME() called with invalid parameter: \"$QTVER\", please report bug" && exit 1;;
esac
}
# @FUNCTION: set-qtdir
# @DESCRIPTION:
# This function is not needed anymore.
set-qtdir() {
:
}
# @FUNCTION: qtver-from-kdever
# @USAGE: < kde-version >
# @DESCRIPTION:
# returns minimal qt version needed for specified kde version
qtver-from-kdever() {
debug-print-function $FUNCNAME "$@"
local ver
case $1 in
3.1*) ver=3.1;;
3.2*) ver=3.2;;
3.3*) ver=3.3;;
3.4*) ver=3.3;;
3.5*) ver=3.3;;
3*) ver=3.0.5;;
5) ver=3.3;; # cvs version
*) echo "!!! error: $FUNCNAME called with invalid parameter: \"$1\", please report bug" && exit 1;;
esac
selected_version="$ver"
}
min-kde-ver() {
debug-print-function $FUNCNAME "$@"
case $1 in
3.0*) selected_version="3.0";;
3.1*) selected_version="3.1";;
3.2*) selected_version="3.2";;
3.3*) selected_version="3.3";;
3.4*) selected_version="3.4";;
3.5*) selected_version="3.5";;
3*) selected_version="3.0";;
5) selected_version="5";;
*) echo "!!! error: $FUNCNAME() called with invalid parameter: \"$1\", please report bug" && exit 1;;
esac
}
# @FUNCTION: kde_sandbox_patch
# @USAGE: < dir > [ dir ] [ dir ] [...]
# @DESCRIPTION:
# generic makefile sed for sandbox compatibility. for some reason when the kde makefiles (of many packages
# and versions) try to chown root and chmod 4755 some binaries (after installing, target install-exec-local),
# they do it to the files in $(bindir), not $(DESTDIR)/$(bindir). Most of these have been fixed in latest cvs
# but a few remain here and there.
#
# Pass a list of dirs to sed, Makefile.{am,in} in these dirs will be sed'ed.
# This should be harmless if the makefile doesn't need fixing.
kde_sandbox_patch() {
debug-print-function $FUNCNAME "$@"
while [[ -n "$1" ]]; do
# can't use dosed, because it only works for things in ${D}, not ${S}
cd $1
for x in Makefile.am Makefile.in Makefile
do
if [[ -f "$x" ]]; then
echo Running sed on $x
cp $x ${x}.orig
sed -e 's: $(bindir): $(DESTDIR)/$(bindir):g' -e 's: $(kde_datadir): $(DESTDIR)/$(kde_datadir):g' -e 's: $(TIMID_DIR): $(DESTDIR)/$(TIMID_DIR):g' ${x}.orig > ${x}
rm ${x}.orig
fi
done
shift
done
}
# @FUNCTION: kde_remove_flag
# @USAGE: < dir > < flag >
# @DESCRIPTION:
# remove an optimization flag from a specific subdirectory's makefiles.
# currently kdebase and koffice use it to compile certain subdirs without
# -fomit-frame-pointer which breaks some things.
kde_remove_flag() {
debug-print-function $FUNCNAME "$@"
cd "${S}"/${1} || die "cd to '${S}/${1}' failed."
[[ -n "$2" ]] || die "missing argument to kde_remove_flag"
cp Makefile Makefile.orig
sed -e "/CFLAGS/ s/${2}//g
/CXXFLAGS/ s/${2}//g" Makefile.orig > Makefile
cd "${OLDPWD}"
}
buildsycoca() {
[[ $EBUILD_PHASE != postinst ]] && [[ $EBUILD_PHASE != postrm ]] && \
die "buildsycoca() has to be calles in pkg_postinst() and pkg_postrm()."
if [[ -x ${KDEDIR}/bin/kbuildsycoca ]] && [[ -z ${ROOT} || ${ROOT} == "/" ]] ; then
# First of all, make sure that the /usr/share/services directory exists
# and it has the right permissions
mkdir -p /usr/share/services
chown root:0 /usr/share/services
chmod 0755 /usr/share/services
ebegin "Running kbuildsycoca to build global database"
# Filter all KDEDIRs not belonging to the current SLOT from XDG_DATA_DIRS
# before running kbuildsycoca. This makes sure they don't show up in the
# 3.5 K-menu unless the user manually adds them.
XDG_DATA_DIRS="/usr/share:${KDEDIR}/share:/usr/local/share"
"${KDEDIR}"/bin/kbuildsycoca --global --noincremental &> /dev/null
eend $?
fi
}
postprocess_desktop_entries() {
[[ $EBUILD_PHASE != preinst ]] && [[ $EBUILD_PHASE != install ]] && \
die "postprocess_desktop_entries() has to be called in src_install() or pkg_preinst()."
if [[ -d ${D}${PREFIX}/share/applnk ]] ; then
# min/max depth is _important_ as it excludes legacy KDE stuff. Moving it would cause breakage.
local desktop_entries="$(find "${D}${PREFIX}/share/applnk" -mindepth 2 -maxdepth 2 \
-name '*\.desktop' -not -path '*.hidden*' 2>/dev/null)"
if [[ -n ${desktop_entries} ]]; then
for entry in ${desktop_entries} ; do
if ! [[ -f "${D}${PREFIX}"/share/applications/kde/${entry##*/} ]] ; then
dodir "${PREFIX}"/share/applications/kde
mv ${entry} "${D}${PREFIX}"/share/applications/kde
fi
done
fi
fi
validate_desktop_entries "${PREFIX}"/share/applications
}
# is this a kde-base ebuid?
if [[ "${CATEGORY}" == "kde-base" ]]; then
debug-print "${ECLASS}: KDEBASE ebuild recognized"
export KDEBASE="true"
export KDEREVISION
fi