diff options
author | Tomas Chvatal <scarabeus@gentoo.org> | 2009-04-13 00:02:45 +0000 |
---|---|---|
committer | Tomas Chvatal <scarabeus@gentoo.org> | 2009-04-13 00:02:45 +0000 |
commit | 14672ad826d195c5d1f969c9a303d6fc2f14de2d (patch) | |
tree | 0bc9f3245990376feb98d0d886294b438b14a249 /eclass/kde4-base.eclass | |
parent | Update mask for kde4. Block for change older than 4.2.2 due to eclass update ... (diff) | |
download | gentoo-2-14672ad826d195c5d1f969c9a303d6fc2f14de2d.tar.gz gentoo-2-14672ad826d195c5d1f969c9a303d6fc2f14de2d.tar.bz2 gentoo-2-14672ad826d195c5d1f969c9a303d6fc2f14de2d.zip |
Update kde4 eclasses
Add back support for doc handling (now via doc useflag)
Force kdeprefix only for kde-base things (others are going unprefixed to /usr) ->
Note for this: if user find that some application is pulling [-kdeprefix] kde uninstall/install of that app should help.
Rewritten slot handling with simpler code.
Added detection and alert system for finding what aplication break sth for /usr/share/config and /usr/share/kde4 and screw up perms.
Left for next time: "Support for stable live (live packages from stable branch [shiny huh]). :]"
Diffstat (limited to 'eclass/kde4-base.eclass')
-rw-r--r-- | eclass/kde4-base.eclass | 639 |
1 files changed, 267 insertions, 372 deletions
diff --git a/eclass/kde4-base.eclass b/eclass/kde4-base.eclass index c2b2171690ab..d10ecd2dcbdf 100644 --- a/eclass/kde4-base.eclass +++ b/eclass/kde4-base.eclass @@ -1,6 +1,6 @@ # Copyright 2007-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.33 2009/03/26 21:55:09 jmbsvicetto Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.34 2009/04/13 00:02:45 scarabeus Exp $ # @ECLASS: kde4-base.eclass # @MAINTAINER: @@ -22,102 +22,6 @@ fi EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_postinst pkg_postrm -# @FUNCTION: kde4-base_set_qt_dependencies -# @DESCRIPTION: -# Set qt dependencies. And use opengl based on OPENGL_REQUIRED variable. -kde4-base_set_qt_dependencies() { - local qtdepend qtopengldepend - - qtdepend=" - x11-libs/qt-core:4[qt3support,ssl] - x11-libs/qt-gui:4[accessibility,dbus] - x11-libs/qt-qt3support:4[accessibility] - x11-libs/qt-script:4 - x11-libs/qt-sql:4[qt3support] - x11-libs/qt-svg:4 - x11-libs/qt-test:4 - " - qtwebkitdepend=" - x11-libs/qt-webkit:4 - " - qtopengldepend=" - x11-libs/qt-opengl:4 - " - - case ${WEBKIT_REQUIRED} in - always) - qtdepend="${qtdepend} - ${qtwebkitdepend}" - ;; - optional) - IUSE="${IUSE} webkit" - qtdepend="${qtdepend} - webkit? ( ${qtwebkitdepend} ) - " - ;; - *) WEBKIT_REQUIRED="never" ;; - esac - # opengl dependencies - case ${OPENGL_REQUIRED} in - always) - qtdepend="${qtdepend} - ${qtopengldepend} - " - ;; - optional) - IUSE="${IUSE} opengl" - qtdepend="${qtdepend} - opengl? ( ${qtopengldepend} ) - " - ;; - *) OPENGL_REQUIRED="never" ;; - esac - - COMMONDEPEND="${COMMONDEPEND} ${qtdepend}" -} - -if [[ ${NEED_KDE} != "none" ]] ; then - # Qt - kde4-base_set_qt_dependencies - - # X11 libs - COMMONDEPEND="${COMMONDEPEND} - x11-libs/libXext - x11-libs/libXt - x11-libs/libXxf86vm - " - - # localization deps - # DISABLED UNTIL PMS decide correct approach :( - if [[ -n ${KDE_LINGUAS} ]]; then - LNG_DEP="" - for _lng in ${KDE_LINGUAS}; do - # there must be or due to issue if lingua is not present in kde-l10n so - # it wont die but pick kde-l10n as-is. - LNG_DEP="${LNG_DEP} - || ( kde-base/kde-l10n[linguas_${_lng},kdeprefix=] kde-base/kde-l10n[kdeprefix=] )" - done - fi - - # Set common dependencies for all ebuilds that inherit this eclass - DEPEND="${DEPEND} ${COMMONDEPEND} - >=dev-util/cmake-2.6.2 - dev-util/pkgconfig - >=sys-apps/sandbox-1.3.2 - " - RDEPEND="${RDEPEND} ${COMMONDEPEND}" -fi # NEED_KDE != NONE block - -if [[ $BUILD_TYPE = live ]]; then - # Disable tests for live ebuilds - RESTRICT="${RESTRICT} test" - # Live ebuilds in kde-base default to kdeprefix by default - IUSE="${IUSE} +kdeprefix" -else - # All other ebuild types default to -kdeprefix as before - IUSE="${IUSE} kdeprefix" -fi - # @ECLASS-VARIABLE: OPENGL_REQUIRED # @DESCRIPTION: # Is qt-opengl required? Possible values are 'always', 'optional' and 'never'. @@ -136,242 +40,223 @@ WEBKIT_REQUIRED="${WEBKIT_REQUIRED:-never}" # This variable must be set before inheriting any eclasses. Defaults to 'never'. CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}" -case ${CPPUNIT_REQUIRED} in +# @ECLASS-VARIABLE: KDE_REQUIRED +# @DESCRIPTION: +# Is kde required? Possible values are 'always', 'optional' and 'never'. +# This variable must be set before inheriting any eclasses. Defaults to 'always' +# If set to always or optional, KDE_MINIMAL may be overriden as well. +# Note that for kde-base packages this variable is fixed to 'always'. +KDE_REQUIRED="${KDE_REQUIRED:-always}" + +# Verify KDE_MINIMAL (display QA notice in pkg_setup, still we need to fix it here) +if [[ -n ${KDE_MINIMAL} ]]; then + for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do + [[ ${KDE_MINIMAL} = ${slot} ]] && KDE_MINIMAL_VALID=1 && break + done + [[ -z ${KDE_MINIMAL_VALID} ]] && unset KDE_MINIMAL +else + KDE_MINIMAL_VALID=1 +fi + +# @ECLASS-VARIABLE: KDE_MINIMAL +# @DESCRIPTION: +# This wariable is used when KDE_REQUIRED is set, to specify required KDE minimal +# version for apps to work. Currently defaults to 4.2 +# One may override this variable to raise version requirements. +# For possible values look at KDE_SLOTS and KDE_LIVE_SLOTS variables. +# Note that for kde-base packages is fixed to ${SLOT}. +KDE_MINIMAL="${KDE_MINIMAL:-4.2}" + +# Fallback behaviour (for now) +# TODO Remove when tree is clean +if [[ -n ${NEED_KDE} ]]; then + case ${NEED_KDE} in + none) + KDE_REQUIRED="never" + ;; + *) + KDE_REQUIRED="always" + KDE_MINIMAL="${NEED_KDE}" + ;; + esac +fi + +# OpenGL dependencies +qtopengldepend=" + x11-libs/qt-opengl:4 +" +case ${OPENGL_REQUIRED} in always) - DEPEND="${DEPEND} - dev-util/cppunit + COMMONDEPEND="${COMMONDEPEND} ${qtopengldepend}" + ;; + optional) + IUSE="${IUSE} opengl" + COMMONDEPEND="${COMMONDEPEND} + opengl? ( ${qtopengldepend} ) + " + ;; + *) ;; +esac +unset qtopengldepend + +# WebKit dependencies +qtwebkitdepend=" + x11-libs/qt-webkit:4 +" +case ${WEBKIT_REQUIRED} in + always) + COMMONDEPEND="${COMMONDEPEND} ${qtwebkitdepend}" + ;; + optional) + IUSE="${IUSE} webkit" + COMMONDEPEND="${COMMONDEPEND} + webkit? ( ${qtwebkitdepend} ) " ;; + *) ;; +esac +unset qtwebkitdepend + +# CppUnit dependencies +cppuintdepend=" + dev-util/cppunit +" +case ${CPPUNIT_REQUIRED} in + always) + DEPEND="${DEPEND} ${cppuintdepend}" + ;; optional) IUSE="${IUSE} test" DEPEND="${DEPEND} - test? ( dev-util/cppunit ) + test? ( ${cppuintdepend} ) " ;; - *) - CPPUNIT_REQUIRED="never" - ;; + *) ;; esac +unset cppuintdepend -# @ECLASS-VARIABLE: NEED_KDE -# @DESCRIPTION: -# This variable sets the version of KDE4 which will be used by the eclass. -# For kde-base packages, if it is not set by the ebuild, -# it's assumed that the required KDE4 version is the latest available. -# For non kde-base packages, it is also set to the latest by default. -# -# For more precise adjustments or for specifying particular kde version, -# KDE_MINIMAL variable can be used. -# -# @CODE -# Acceptable values are: -# - latest - Use latest version in the portage tree -# Default for kde-base ebuilds. -# - live - Use live release (live ebuilds) -# - none - Let the ebuild handle SLOT, kde dependencies, KDEDIR, ... -# - 4.2, 4.1, kde-4 - respective slots for kde versions -# @CODE -# Note: default NEED_KDE is latest -NEED_KDE="${NEED_KDE:=latest}" -export NEED_KDE +# DEPRECATED block +if [[ ${NEED_KDE} != "none" ]]; then + # localization deps + # DISABLED UNTIL PMS decide correct approach :( + if [[ -n ${KDE_LINGUAS} ]]; then + LNG_DEP="" + for _lng in ${KDE_LINGUAS}; do + # there must be or due to issue if lingua is not present in kde-l10n so + # it wont die but pick kde-l10n as-is. + LNG_DEP="${LNG_DEP} + || ( + kde-base/kde-l10n[linguas_${_lng},kdeprefix=] + kde-base/kde-l10n[kdeprefix=] + ) + " + done + fi +fi # NEED_KDE != NONE block -# @ECLASS-VARIABLE: KDE_MINIMAL -# @DESCRIPTION: -# This wariable is used when NEED_KDE="latest" is set, to specify the -# required KDE minimal version for which apps will work. -# @CODE -# KDE_MINIMAL="-4.1" -# @CODE -# Note: default minimal version is kde-4.1, which means that the apps will work -# with any KDE version >=${KDE_MINIMAL} -KDE_MINIMAL="${KDE_MINIMAL:=4.2}" -export KDE_MINIMAL - -# FIXME: the code section, explanation of live. The last sentence needs other -# formulation too. -# -# @ECLASS-VARIABLE: KDE_WANTED -# @DESCRIPTION: -# When NEED_KDE=latest is inherited, KDE_WANTED serves to indicate the prefered kde -# version. It's value is looked for before any other. Useful when having more -# +kdeprefix installs: you can choose which kde version, if present, to link -# against. -# -# @CODE -# Acceptable values are: -# stable = whatever is main tree (now 4.1) -# testing = whatever is in testing on main tree -# snapshot = whatever is released under snapshots (4.2 at present) -# live = live svn ebuilds, also default value, do not be scared it goes in this -# -# order: live->snapshot->testing->stable, when searching for kde. This way we -# allow users to use just kde4snapshots and use software from the tree. -KDE_WANTED="${KDE_WANTED:=live}" -export KDE_WANTED - -case ${NEED_KDE} in - latest) - if [[ $KDEBASE = kde-base ]]; then - case ${PV} in - 4.3* | 4.2.9* | 4.2.8* | 4.2.7* | 4.2.6*) - _kdedir="4.3" - _pv="-${PV}:4.3" - _pvn="-${PV}" - ;; - 4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) - _kdedir="4.2" - _pv="-${PV}:4.2" - _pvn="-${PV}" - ;; - 4.1*| 4.0.9* | 4.0.8*) - _kdedir="4.1" - _pv="-${PV}:4.1" - _pvn="-${PV}" - ;; - 4.0*) - _kdedir="4.0" - _pv="-${PV}:kde-4" - _pvn="-${PV}" - ;; - 3.9*) - _kdedir="3.9" - _pv="-${PV}:kde-4" - _pvn="-${PV}" - ;; - 9999*) - _kdedir="live" - _pv="-${PV}:live" - _pvn="-${PV}" - ;; - *) - die "NEED_KDE=latest not supported for PV=${PV}" ;; - esac - _operator=">=" +# Setup packages inheriting this eclass +case ${KDEBASE} in + + kde-base) + if [[ $BUILD_TYPE = live ]]; then + # Disable tests for live ebuilds + RESTRICT="${RESTRICT} test" + # Live ebuilds in kde-base default to kdeprefix by default + IUSE="${IUSE} +kdeprefix" else - # this creates dependency on any version of kde4 - _operator=">=" - _pv="-${KDE_MINIMAL}" - _pvn=${_pv} + # All other ebuild types default to -kdeprefix as before + IUSE="${IUSE} kdeprefix" fi + # Determine SLOT from PV + case ${PV} in + 4.3* | 4.2.9* | 4.2.8* | 4.2.7* | 4.2.6*) SLOT="4.3" ;; + 4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) SLOT="4.2" ;; + *9999*) SLOT="live" ;; + *) die "Unsupported ${PV}" ;; + esac + _kdedir="${SLOT}" + _pv="-${PV}:${SLOT}" + _pvn="-${PV}" + + # Block installation of other SLOTS unless kdeprefix + for slot in ${KDE_SLOTS[@]}; do + # Block non kdeprefix ${PN} on other slots + if [[ ${SLOT} != ${slot} ]]; then + RDEPEND="${RDEPEND} + !kdeprefix? ( !kde-base/${PN}:${slot}[-kdeprefix] ) + " + fi + done ;; - # NEED_KDE="${PV}" - scm|svn|live|9999*) - _kdedir="live" - _operator=">=" - _pv="-${NEED_KDE}:live" - _pvn="-${NEED_KDE}" - export NEED_KDE="live" - ;; - 4.3 | 4.2.9* | 4.2.8* | 4.2.7* | 4.2.6*) - _kdedir="4.3" - _pv="-${NEED_KDE}:4.3" - _pvn="-${NEED_KDE}" - _operator=">=" - ;; - 4.2 | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) - _kdedir="4.2" - _pv="-${NEED_KDE}:4.2" - _pvn="-${NEED_KDE}" - _operator=">=" - ;; - 4.1 | 4.0.9* | 4.0.8*) - _kdedir="4.1" - _pv="-${NEED_KDE}:4.1" - _pvn="-${NEED_KDE}" - _operator=">=" - ;; - 4.0* | 4) - _kdedir="4.0" - _operator=">=" - _pv="-${NEED_KDE}:kde-4" - _pvn="-${NEED_KDE}" - ;; - 3.9*) - _kdedir="3.9" - _operator=">=" - _pv="-${NEED_KDE}:kde-4" - _pvn="-${NEED_KDE}" - ;; - - # The ebuild handles dependencies, KDEDIR, SLOT. - none) - : + koffice) + SLOT="2" + _pv="-${KDE_MINIMAL}" + _pvn="${_pv}" ;; *) - die "NEED_KDE=${NEED_KDE} currently not supported." + _pv="-${KDE_MINIMAL}" + _pvn="${_pv}" ;; -esac - -if [[ ${NEED_KDE} != none ]]; then - #Set the SLOT - if [[ -n ${KDEBASE} ]]; then - if [[ ${NEED_KDE} = live ]]; then - SLOT="live" - else - case ${KMNAME} in - koffice) - case ${PV} in - 9999*) SLOT="live" ;; - *) SLOT="2" ;; - esac - ;; - kdevelop) - case ${PV} in - 9999*) SLOT="live" ;; - 4.0*|3.9*) SLOT="4" ;; - esac - ;; - kdevplatform) - case ${PV} in - 9999*) SLOT="live" ;; - 1.0*|0.9*) SLOT="1" ;; - esac - ;; - *) - case ${PV} in - 9999*) SLOT="live" ;; - 4.3* | 4.2.9* | 4.2.8* | 4.2.7* | 4.2.6*) SLOT="4.3" ;; - 4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) SLOT="4.2" ;; - 4.1* | 4.0.9* | 4.0.8*) SLOT="4.1" ;; - *) SLOT="4.1" ;; - esac - ;; - esac - fi - fi - # Block installation of other SLOTS unless kdeprefix - for KDE_SLOT in ${KDE_SLOTS[@]}; do - # block non kdeprefix ${PN} on other slots - # we do this only if we do not depend on any version of kde - if [[ ${SLOT} != ${KDE_SLOT} ]]; then - RDEPEND="${RDEPEND} - !kdeprefix? ( !kde-base/${PN}:${KDE_SLOT}[-kdeprefix] ) - " - fi - done +esac - # Adding kdelibs and kdebase-data deps to all other packages. - if [[ ${PN} != kdelibs ]]; then - DEPEND="${DEPEND} - kdeprefix? ( ${_operator}kde-base/kdelibs${_pv}[kdeprefix] ) - !kdeprefix? ( ${_operator}kde-base/kdelibs${_pvn}[-kdeprefix] ) +# KDE dependencies +kdecommondepend=" + dev-lang/perl + x11-libs/libXext + x11-libs/libXt + x11-libs/libXxf86vm + x11-libs/qt-core:4[qt3support,ssl] + x11-libs/qt-gui:4[accessibility,dbus] + x11-libs/qt-qt3support:4[accessibility] + x11-libs/qt-script:4 + x11-libs/qt-sql:4[qt3support] + x11-libs/qt-svg:4 + x11-libs/qt-test:4 +" +if [[ ${PN} != kdelibs ]]; then + if [[ ${KDEBASE} = kde-base ]]; then + kdecommondepend="${kdecommondepend} + kdeprefix? ( >=kde-base/kdelibs${_pv}[kdeprefix] ) + !kdeprefix? ( >=kde-base/kdelibs${_pvn}[-kdeprefix] ) " - RDEPEND="${RDEPEND} - kdeprefix? ( ${_operator}kde-base/kdelibs${_pv}[kdeprefix] ) - !kdeprefix? ( ${_operator}kde-base/kdelibs${_pvn}[-kdeprefix] ) + else + kdecommondepend="${kdecommondepend} + >=kde-base/kdelibs${_pv} " - if [[ ${PN} != kdepimlibs && ${PN} != kdebase-data ]]; then - RDEPEND="${RDEPEND} - kdeprefix? ( ${_operator}kde-base/kdebase-data${_pv}[kdeprefix] ) - !kdeprefix? ( ${_operator}kde-base/kdebase-data${_pvn}[-kdeprefix] ) - " - fi fi - unset _operator _pv _pvn fi +unset _pv _pvn +kdedepend=" + >=dev-util/cmake-2.6.2 + dev-util/pkgconfig + >=sys-apps/sandbox-1.3.2 +" +case ${KDE_REQUIRED} in + always) + COMMONDEPEND="${COMMONDEPEND} ${kdecommondepend}" + DEPEND="${DEPEND} ${kdedepend}" + ;; + optional) + IUSE="${IUSE} kde" + COMMONDEPEND="${COMMONDEPEND} + kde? ( ${kdecommondepend} )" + DEPEND="${DEPEND} + kde? ( ${kdedepend} )" + ;; + *) ;; +esac +unset kdecommondepend kdedepend + +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}" + +# Accumulate dependencies set by this eclass +DEPEND="${DEPEND} ${COMMONDEPEND}" +RDEPEND="${RDEPEND} ${COMMONDEPEND}" # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a # koffice ebuild, the URI should be set in the ebuild itself @@ -382,7 +267,7 @@ case ${BUILD_TYPE} in # Split ebuild, or extragear stuff if [[ -n ${KMNAME} ]]; then ESVN_PROJECT="${KMNAME}" - if [[ -z ${KMNOMODULE} && -z ${KMMODULE} ]]; then + if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then KMMODULE="${PN}" fi # Split kde-base/ ebuilds: (they reside in trunk/KDE) @@ -393,11 +278,18 @@ case ${BUILD_TYPE} in kdereview) ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" ;; + kdesupport) + ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" + ESVN_PROJECT="${PN}" + ;; kde*) ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/${KMNAME}" ;; extragear*|playground*) + # Unpack them in toplevel dir, so that they won't conflict with kde4-meta + # build packages from same svn location. ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" + ESVN_PROJECT="${PN}" ;; koffice) ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}" @@ -421,7 +313,7 @@ case ${BUILD_TYPE} in kdebase-apps) _kmname="kdebase" ;; *) - _kmname=${KMNAME} ;; + _kmname="${KMNAME}" ;; esac else _kmname=${PN} @@ -452,49 +344,57 @@ debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}" # @ECLASS-VARIABLE: PREFIX # @DESCRIPTION: -# Set the installation PREFIX. All kde-base ebuilds go into the KDE4 installation directory. -# Applications installed by the other ebuilds go into ${KDEDIR} by default, this value -# can be superseded by defining PREFIX before inheriting kde4-base. -# This value is set on pkg_setup -PREFIX="" - -debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SLOT ${SLOT} - NEED_KDE ${NEED_KDE}" +# Set the installation PREFIX for non kde-base applications. It defaults to /usr. +# kde-base packages go into KDE4 installation directory (KDEDIR) by default. +# No matter the PREFIX, package will be built agains KDE installed in KDEDIR. # @FUNCTION: kde4-base_pkg_setup # @DESCRIPTION: -# Adds flags needed by all of KDE 4 to $QT4_BUILT_WITH_USE_CHECK. Uses -# kde4-functions_check_use from kde4-functions.eclass to print appropriate -# errors and die if any required flags listed in $QT4_BUILT_WITH_USE_CHECK or -# $KDE4_BUILT_WITH_USE_CHECK are missing. +# Do the basic kdeprefix KDEDIR settings and determine with which kde should +# optional applications link kde4-base_pkg_setup() { debug-print-function ${FUNCNAME} "$@" - # Don't set KDEHOME during compile, it will cause access violations - unset KDEHOME + # QA ebuilds + case ${NEED_KDE} in + none) ewarn "QA Notice: using deprecated NEED_KDE variable, use KDE_REQUIRED=\"never\" or KDE_REQUIRED=\"optional\" instead. You may want to override KDE_MINIMAL as well (default is KDE_MINIMAL=\"${KDE_MINIMAL}\")." ;; + *) [[ -n ${NEED_KDE} ]] && ewarn "QA Notice: using deprecated NEED_KDE variable, use KDE_MINIMAL instead (default is KDE_MINIMAL=\"${KDE_MINIMAL}\")." ;; + esac + [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})." - # Search for best suitable kde installation for misc kde package. - # Computation based on NEED_KDE and KDE_MINIMAL - [[ ${KDEBASE} != kde-base ]] && [[ ${NEED_KDE} = latest || ${NEED_KDE} = none ]] && get_latest_kdedir + # Don't set KDEHOME during compilation, it will cause access violations + unset KDEHOME - # Set PREFIX - if use kdeprefix; then - KDEDIR="/usr/kde/${_kdedir}" - KDEDIRS="/usr/local/:/usr:${KDEDIR}" + if [[ ${KDEBASE} = kde-base ]]; then + if use kdeprefix; then + KDEDIR="/usr/kde/${_kdedir}" + else + KDEDIR="/usr" + fi + PREFIX="${PREFIX:-${KDEDIR}}" else - KDEDIR="/usr" - KDEDIRS="/usr/local/:/usr" + # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL + KDEDIR= + local kde_minimal_met + for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do + [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1 + if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then + if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then + KDEDIR="/usr/kde/${slot}" + else + KDEDIR="/usr" + fi + break; + fi + done + [[ -z KDEDIR ]] && die "Failed to determine KDEDIR!" + PREFIX="${PREFIX:-/usr}" fi - # Set the prefix based on KDEDIR - # Make it a consequence of kdeprefix - PREFIX=${KDEDIR} + # Not needed anymore unset _kdedir - # check if qt has correct deps - [[ -n ${QT4_BUILT_WITH_USE_CHECK} || -n ${KDE4_BUILT_WITH_USE_CHECK[@]} ]] && \ - die "built_with_use illegal in this EAPI!" - - if [[ ${BUILD_TYPE} = live && -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then + if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then echo elog "WARNING! This is an experimental live ebuild of ${KMNAME:-${PN}}" elog "Use it at your own risk." @@ -554,27 +454,14 @@ kde4-base_src_configure() { append-cppflags -DQT_NO_DEBUG fi - # Enable generation of HTML handbook - if has htmlhandbook ${IUSE//+} && use htmlhandbook; then - ebegin "Enabling building of HTML handbook" - mycmakeargs="${mycmakeargs} -DKDE4_ENABLE_HTMLHANDBOOK=ON" - eend $? - fi - # Build tests in src_test only, where we override this value - mycmakeargs="${mycmakeargs} -DKDE4_BUILD_TESTS=OFF" + local cmakeargs="-DKDE4_BUILD_TESTS=OFF" # Set distribution name - [[ ${PN} = kdelibs ]] && mycmakeargs="${mycmakeargs} -DKDE_DISTRIBUTION_TEXT=Gentoo" - - # runpath linking - mycmakeargs="${mycmakeargs} -DKDE4_USE_ALWAYS_FULL_RPATH=ON" + [[ ${PN} = kdelibs ]] && cmakeargs="${cmakeargs} -DKDE_DISTRIBUTION_TEXT=Gentoo" # Here we set the install prefix - mycmakeargs="${mycmakeargs} -DCMAKE_INSTALL_PREFIX=${PREFIX}" - - # If prefix is /usr, sysconf needs to be /etc, not /usr/etc - use kdeprefix || mycmakeargs="${mycmakeargs} -DSYSCONF_INSTALL_DIR=/etc" + cmakeargs="${cmakeargs} -DCMAKE_INSTALL_PREFIX=${PREFIX}" # Set environment QTEST_COLORED=1 @@ -583,20 +470,28 @@ kde4-base_src_configure() { # Hardcode path to *.pc KDE files export PKG_CONFIG_PATH="${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}${KDEDIR}/$(get_libdir)/pkgconfig" - # Override some environment variables - PATH="${KDEDIR}/bin:${PATH}" - LDPATH="${KDEDIR}/$(get_libdir):${LDPATH}" - - # Set cmake prefixes to allow buildsystem to localize valid KDE installation when more are present - if use kdeprefix; then - mycmakeargs="${mycmakeargs} - -DCMAKE_SYSTEM_INCLUDE_PATH=${KDEDIR}/include - -DCMAKE_SYSTEM_LIBRARY_PATH=${KDEDIR}/$(get_libdir) - -DCMAKE_SYSTEM_PREFIX_PATH=${KDEDIR} - -DCMAKE_SYSTEM_PROGRAM_PATH=${KDEDIR}/bin" + # Shadow existing /usr installations + unset KDEDIRS + + # Override some environment variables - only when kdeprefix is different, + # to not break ccache/distcc + if [[ ${KDEDIR} != /usr ]]; then + PATH="${KDEDIR}/bin:${PATH}" + LDPATH="${KDEDIR}/$(get_libdir):${LDPATH}" fi - [ -e CMakeLists.txt ] && cmake-utils_src_configure + if has kdeprefix ${IUSE//+} && use kdeprefix; then + # Set cmake prefixes to allow buildsystem to localize valid KDE installation + # when more are present + cmakeargs="${cmakeargs} -DCMAKE_SYSTEM_PREFIX_PATH=${KDEDIR}" + else + # If prefix is /usr, sysconf needs to be /etc, not /usr/etc + cmakeargs="${cmakeargs} -DSYSCONF_INSTALL_DIR=/etc" + fi + + mycmakeargs="${cmakeargs} ${mycmakeargs}" + + cmake-utils_src_configure } # @FUNCTION: kde4-base_src_compile @@ -657,11 +552,11 @@ kde4-base_src_make_doc() { done fi - if [[ -n ${KDEBASE} && -d "${D}/usr/share/doc/${PF}" ]]; then + if [[ -n ${KDEBASE} ]] && [[ -d "${D}/usr/share/doc/${PF}" ]]; then # work around bug #97196 - dodir /usr/share/doc/kde && \ - mv "${D}/usr/share/doc/${PF}" "${D}"/usr/share/doc/kde/ || \ - die "Failed to move docs to kde/ failed." + dodir /usr/share/doc/KDE4 && \ + mv "${D}/usr/share/doc/${PF}" "${D}"/usr/share/doc/KDE4/ || \ + die "Failed to move docs to KDE4/." fi } |