# 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 # # @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/kdestyles x11-themes/equinox kde-base/kdestyles x11-themes/qinx 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/kdelibs 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/krusader 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/kdebase kde-base/kde-i18n 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/kdemultimedia media-sound/amarok kde-base/kdemultimedia media-video/kaffeine 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/kdenetwork kde-misc/kdnssd-avahi 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/kdesdk kde-base/kdiff3 kde-base/kdesdk kde-base/kscope kde-base/kdesdk dev-util/kdevelop kde-base/kdesdk dev-util/kdbg 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/kdeutils kde-base/k3b 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 ' # Quit if we have SRC_URI defined in 9999 ebuild. # If we are 9999, then we should not have any SRC_URI # That is the purpose of 9999 to install without any side sources if [[ ! -z "${SRC_URI}" ]]; then ewarn "Your ebuil have ${PV} version mark, that means that it is fresh enough and should not \"drag\" anything behind it" die "SRC_URI defined in 9999 ebuild." fi # @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 < # @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 < # @RETURN: 0 if is a parent package, otherwise 1 is-parent-package() { local parent child while read parent child; do [[ "${parent}" == "$1" ]] && return 0 done < # @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 [[ ${PN} != "kdelibs" ]] ; then 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-$PVR" RDEPEND="${x_DEPEND} ~kde-base/kdelibs-${PVR}" 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.10-r10" RDEPEND="${x_DEPEND} >=kde-base/kdelibs-3.5.10-r10" fi fi qtver-from-kdever ${KDEVER} need-qt ${selected_version} if [[ -n "${KDEBASE}" ]]; then case "$PV" in 3.5.0_*|\ 3.5_*|\ 3.5.0|\ 3*) SLOT="$KDEMAJORVER.$KDEMINORVER" ;; 9999) SLOT="3.5" # We are developing for kde 3.5 ;; *) : ${SLOT="0"} die "$ECLASS: Error: unrecognized version $PV, could not set SRC_URI" ;; esac fi } # @FUNCTION: set-kdedir # @USAGE: < version > # @DESCRIPTION: # Sets the right directories for the kde 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";; 9999*) export PREFIX="/usr/kde/git";; *) 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/{git,svn,3.5} "${PREFIX}" \ "${KDE3LIBSDIR}" "${KDELIBSDIR}" "${KDE3DIR}" "${KDEDIR}"; do if [[ -f "${x}/include/kwin.h" ]]; then debug-print found "${KDEDIR}" 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";; 9999.0) export KDEDIR="/usr/kde/git";; *) 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 . 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 9999) ver=3.3;; # git 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";; 9999) selected_version="9999";; *) 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" || "${CATEGORY}" == "kde" ]]; then debug-print "${ECLASS}: KDEBASE ebuild recognized" export KDEBASE="true" export KDEREVISION fi