/[gentoo-x86]/eclass/kde4-base.eclass
Gentoo

Diff of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.93 Revision 1.99
1# Copyright 1999-2010 Gentoo Foundation 1# Copyright 1999-2010 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.93 2011/05/23 22:56:36 abcd Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.99 2011/06/15 00:11:05 abcd Exp $
4 4
5# @ECLASS: kde4-base.eclass 5# @ECLASS: kde4-base.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# kde@gentoo.org 7# kde@gentoo.org
8# @BLURB: This eclass provides functions for kde 4.X ebuilds 8# @BLURB: This eclass provides functions for kde 4.X ebuilds
39if [[ ${CMAKE_REQUIRED} = always ]]; then 39if [[ ${CMAKE_REQUIRED} = always ]]; then
40 buildsystem_eclass="cmake-utils" 40 buildsystem_eclass="cmake-utils"
41 export_fns="src_configure src_compile src_test src_install" 41 export_fns="src_configure src_compile src_test src_install"
42fi 42fi
43 43
44# Verify KDE_MINIMAL (display QA notice in pkg_setup, still we need to fix it here)
45if [[ -n ${KDE_MINIMAL} ]]; then
46 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
47 [[ ${KDE_MINIMAL} = ${slot} ]] && KDE_MINIMAL_VALID=1 && break
48 done
49 unset slot
50 [[ -z ${KDE_MINIMAL_VALID} ]] && unset KDE_MINIMAL
51else
52 KDE_MINIMAL_VALID=1
53fi
54
55# @ECLASS-VARIABLE: KDE_MINIMAL 44# @ECLASS-VARIABLE: KDE_MINIMAL
56# @DESCRIPTION: 45# @DESCRIPTION:
57# This variable is used when KDE_REQUIRED is set, to specify required KDE minimal 46# This variable is used when KDE_REQUIRED is set, to specify required KDE minimal
58# version for apps to work. Currently defaults to 4.4 47# version for apps to work. Currently defaults to 4.4
59# One may override this variable to raise version requirements. 48# One may override this variable to raise version requirements.
60# For possible values look at KDE_SLOTS and KDE_LIVE_SLOTS variables.
61# Note that it is fixed to ${SLOT} for kde-base packages. 49# Note that it is fixed to ${PV} for kde-base packages.
62KDE_MINIMAL="${KDE_MINIMAL:-4.4}" 50KDE_MINIMAL="${KDE_MINIMAL:-4.4}"
63 51
64# Set slot for KDEBASE known packages 52# Set slot for KDEBASE known packages
65case ${KDEBASE} in 53case ${KDEBASE} in
66 kde-base) 54 kde-base)
67 SLOT=$(_calculate_kde_slot) 55 SLOT=$(get_kde_version)
68 [[ -z ${SLOT} ]] && die "Unsupported ${PV}" 56 [[ -z ${SLOT} ]] && die "Unsupported PV ${PV}"
69 KDE_MINIMAL="${SLOT}" 57 KDE_MINIMAL="${PV}"
70 ;; 58 ;;
71 koffice) 59 koffice)
72 SLOT="2" 60 SLOT="2"
73 ;; 61 ;;
74 kdevelop) 62 kdevelop)
131# @DESCRIPTION: 119# @DESCRIPTION:
132# Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'. 120# Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'.
133# This variable must be set before inheriting any eclasses. Defaults to 'never'. 121# This variable must be set before inheriting any eclasses. Defaults to 'never'.
134MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}" 122MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}"
135 123
136# @ECLASS-VARIABLE: WEBKIT_REQUIRED
137# @DESCRIPTION:
138# Is qt-webkit requred? Possible values are 'always', 'optional' and 'never'.
139# This variable must be set before inheriting any eclasses. Defaults to 'never'.
140WEBKIT_REQUIRED="${WEBKIT_REQUIRED:-never}"
141
142# @ECLASS-VARIABLE: CPPUNIT_REQUIRED 124# @ECLASS-VARIABLE: CPPUNIT_REQUIRED
143# @DESCRIPTION: 125# @DESCRIPTION:
144# Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'. 126# Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
145# This variable must be set before inheriting any eclasses. Defaults to 'never'. 127# This variable must be set before inheriting any eclasses. Defaults to 'never'.
146CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}" 128CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
179 HOMEPAGE="http://www.kde.org/" 161 HOMEPAGE="http://www.kde.org/"
180 LICENSE="GPL-2" 162 LICENSE="GPL-2"
181 if [[ $BUILD_TYPE = live ]]; then 163 if [[ $BUILD_TYPE = live ]]; then
182 # Disable tests for live ebuilds 164 # Disable tests for live ebuilds
183 RESTRICT+=" test" 165 RESTRICT+=" test"
184 # Live ebuilds in kde-base default to kdeprefix by default 166 fi
185 IUSE+=" +kdeprefix" 167
186 else 168 # Only add the kdeprefix USE flag for older versions, to help
187 # All other ebuild types default to -kdeprefix as before 169 # non-portage package managers handle the upgrade
170 if [[ ${PV} < 4.6.4 && ( ( ${KMNAME} != kdepim && ${PN} != kdepim-runtime ) || ${PV} < 4.6 ) ]]; then
188 IUSE+=" kdeprefix" 171 IUSE+=" kdeprefix"
189 fi 172 fi
173
190 # This code is to prevent portage from searching GENTOO_MIRRORS for 174 # This code is to prevent portage from searching GENTOO_MIRRORS for
191 # packages that will never be mirrored. (As they only will ever be in 175 # packages that will never be mirrored. (As they only will ever be in
192 # the overlay). 176 # the overlay).
193 case ${PV} in 177 case ${PV} in
194 *9999* | 4.?.[6-9]?) 178 *9999* | 4.?.[6-9]?)
209esac 193esac
210 194
211# @ECLASS-VARIABLE: QT_MINIMAL 195# @ECLASS-VARIABLE: QT_MINIMAL
212# @DESCRIPTION: 196# @DESCRIPTION:
213# Determine version of qt we enforce as minimal for the package. 197# Determine version of qt we enforce as minimal for the package.
214if slot_is_at_least 4.6 "${KDE_MINIMAL}"; then 198if version_is_at_least 4.5.50 "${KDE_MINIMAL}"; then
215 QT_MINIMAL="${QT_MINIMAL:-4.7.0}" 199 QT_MINIMAL="${QT_MINIMAL:-4.7.0}"
216else 200else
217 QT_MINIMAL="${QT_MINIMAL:-4.6.3}" 201 QT_MINIMAL="${QT_MINIMAL:-4.6.3}"
218fi 202fi
219 203
278 ;; 262 ;;
279 *) ;; 263 *) ;;
280esac 264esac
281unset qtmultimediadepend 265unset qtmultimediadepend
282 266
283# WebKit dependencies
284case ${KDE_REQUIRED} in
285 always)
286 qtwebkitusedeps="[kde]"
287 ;;
288 optional)
289 qtwebkitusedeps="[kde?]"
290 ;;
291 *) ;;
292esac
293qtwebkitdepend="
294 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
295"
296unset qtwebkitusedeps
297case ${WEBKIT_REQUIRED} in
298 always)
299 COMMONDEPEND+=" ${qtwebkitdepend}"
300 ;;
301 optional)
302 IUSE+=" webkit"
303 COMMONDEPEND+=" webkit? ( ${qtwebkitdepend} )"
304 ;;
305 *) ;;
306esac
307unset qtwebkitdepend
308
309# CppUnit dependencies 267# CppUnit dependencies
310cppuintdepend=" 268cppuintdepend="
311 dev-util/cppunit 269 dev-util/cppunit
312" 270"
313case ${CPPUNIT_REQUIRED} in 271case ${CPPUNIT_REQUIRED} in
320 ;; 278 ;;
321 *) ;; 279 *) ;;
322esac 280esac
323unset cppuintdepend 281unset cppuintdepend
324 282
283
284# WebKit use dependencies
285case ${KDE_REQUIRED} in
286 always)
287 qtwebkitusedeps="[kde]"
288 ;;
289 optional)
290 qtwebkitusedeps="[kde?]"
291 ;;
292 *) ;;
293esac
325# KDE dependencies 294# KDE dependencies
326# Qt accessibility classes are needed in various places, bug 325461 295# Qt accessibility classes are needed in various places, bug 325461
327kdecommondepend=" 296kdecommondepend="
328 dev-lang/perl 297 dev-lang/perl
329 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl] 298 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl]
331 >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde] 300 >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde]
332 >=x11-libs/qt-script-${QT_MINIMAL}:4 301 >=x11-libs/qt-script-${QT_MINIMAL}:4
333 >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support] 302 >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support]
334 >=x11-libs/qt-svg-${QT_MINIMAL}:4 303 >=x11-libs/qt-svg-${QT_MINIMAL}:4
335 >=x11-libs/qt-test-${QT_MINIMAL}:4 304 >=x11-libs/qt-test-${QT_MINIMAL}:4
305 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
336 !aqua? ( 306 !aqua? (
337 x11-libs/libXext 307 x11-libs/libXext
338 x11-libs/libXt 308 x11-libs/libXt
339 x11-libs/libXxf86vm 309 x11-libs/libXxf86vm
340 x11-libs/libXcomposite 310 x11-libs/libXcomposite
473 # Unstable KDE SC releases 443 # Unstable KDE SC releases
474 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" 444 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2"
475 # KDEPIM IS SPECIAL 445 # KDEPIM IS SPECIAL
476 [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/unstable/kdepim/${PV}/${_kmname_pv}.tar.bz2" 446 [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/unstable/kdepim/${PV}/${_kmname_pv}.tar.bz2"
477 ;; 447 ;;
478 4.4.[6789] | 4.4.1?*)
479 # Stable kdepim releases
480 SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2"
481 ;;
482 *) 448 *)
483 # Stable KDE SC releases 449 # Stable KDE SC releases
484 SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" 450 SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2"
451 # KDEPIM IS SPECIAL
452 [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2"
485 ;; 453 ;;
486 esac 454 esac
487 ;; 455 ;;
488 koffice) 456 koffice)
489 case ${PV} in 457 case ${PV} in
510 # trunk 478 # trunk
511 branch_prefix="trunk/KDE" 479 branch_prefix="trunk/KDE"
512 ;; 480 ;;
513 *) 481 *)
514 # branch 482 # branch
515 branch_prefix="branches/KDE/${SLOT}" 483 branch_prefix="branches/KDE/$(get_kde_version)"
516 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX 484 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
517 # @DESCRIPTION 485 # @DESCRIPTION
518 # Suffix appended to ESVN_PROJECT depending on fetched branch. 486 # Suffix appended to ESVN_PROJECT depending on fetched branch.
519 # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise. 487 # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
520 ESVN_PROJECT_SUFFIX="-${PV}" 488 ESVN_PROJECT_SUFFIX="-${PV}"
597 565
598 # default branching 566 # default branching
599 case ${PV} in 567 case ${PV} in
600 9999*) ;; 568 9999*) ;;
601 *) 569 *)
602 # set EGIT_BRANCH and EGIT_COMMIT to ${SLOT} 570 # set EGIT_BRANCH and EGIT_COMMIT to $(get_kde_version)
603 case ${_kmname} in 571 case ${_kmname} in
604 kdeplasma-addons | kdepim | kdepim-runtime | kdepimlibs) 572 kdeplasma-addons | kdepim | kdepim-runtime | kdepimlibs | okular)
605 EGIT_BRANCH="${SLOT}" 573 EGIT_BRANCH="$(get_kde_version)"
606 ;; 574 ;;
607 *) EGIT_BRANCH="KDE/${SLOT}" ;; 575 kdeedu)
576 EGIT_BRANCH="$(get_kde_version)"
577 ;;
578 marble)
579 EGIT_BRANCH="kde-$(get_kde_version)"
580 ;;
581 *) EGIT_BRANCH="KDE/$(get_kde_version)" ;;
608 esac 582 esac
609 ;; 583 ;;
610 esac 584 esac
611 585
586 # default repo uri
587 case ${_kmname} in
588 kdeedu)
589 EGIT_REPO_URI="${EGIT_MIRROR}/${PN}"
590 ;;
591 *)
612 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}" 592 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}"
593 esac
613 594
614 debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}" 595 debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}"
615 debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}" 596 debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
616 ;; 597 ;;
617 esac 598 esac
630# kde-base packages go into KDE4 installation directory (KDEDIR) by default. 611# kde-base packages go into KDE4 installation directory (KDEDIR) by default.
631# No matter the PREFIX, package will be built against KDE installed in KDEDIR. 612# No matter the PREFIX, package will be built against KDE installed in KDEDIR.
632 613
633# @FUNCTION: kde4-base_pkg_setup 614# @FUNCTION: kde4-base_pkg_setup
634# @DESCRIPTION: 615# @DESCRIPTION:
635# Do the basic kdeprefix KDEDIR settings and determine with which kde should 616# Do the basic KDEDIR settings and determine with which kde should
636# optional applications link 617# optional applications link
637kde4-base_pkg_setup() { 618kde4-base_pkg_setup() {
638 debug-print-function ${FUNCNAME} "$@" 619 debug-print-function ${FUNCNAME} "$@"
639 620
640 # QA ebuilds 621 if has kdeprefix ${IUSE//+} && use kdeprefix; then
641 [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})." 622 eerror "Sorry, kdeprefix support has been removed."
623 eerror "Please remove kdeprefix from your USE variable."
624 die "kdeprefix support has been removed"
625 fi
626
627 if [[ ${CATEGORY}/${PN} != kde-base/kdelibs && ${CATEGORY}/${PN} != kde-base/kde-env ]] && \
628 { [[ ${KDE_REQUIRED} == always ]] || { [[ ${KDE_REQUIRED} == optional ]] && use kde; }; } && \
629 has_version kde-base/kdelibs[kdeprefix]; then
630 eerror "Sorry, kdeprefix support has been removed."
631 eerror "Please rebuild kdelibs without kdeprefix support."
632 die "kdeprefix support has been removed"
633 fi
642 634
643 # Don't set KDEHOME during compilation, it will cause access violations 635 # Don't set KDEHOME during compilation, it will cause access violations
644 unset KDEHOME 636 unset KDEHOME
645 637
646 # Check if gcc compiler is fresh enough. 638 # Check if gcc compiler is fresh enough.
649 # executions consume quite some time. 641 # executions consume quite some time.
650 [[ $(gcc-major-version) -lt 4 ]] || \ 642 [[ $(gcc-major-version) -lt 4 ]] || \
651 ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \ 643 ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
652 && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)." 644 && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
653 645
654 if [[ ${KDEBASE} = kde-base ]]; then
655 if use kdeprefix; then
656 KDEDIR=/usr/kde/${SLOT}
657 else
658 KDEDIR=/usr 646 KDEDIR=/usr
659 fi
660 : ${PREFIX:=${KDEDIR}}
661 else
662 # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
663 KDEDIR=
664 local kde_minimal_met
665 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
666 [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
667 if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
668 if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
669 KDEDIR=/usr/kde/${slot}
670 else
671 KDEDIR=/usr
672 fi
673 break;
674 fi
675 done
676 unset slot
677
678 # Bail out if kdelibs required but not found
679 if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
680 [[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
681 else
682 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
683 fi
684
685 : ${PREFIX:=/usr} 647 : ${PREFIX:=/usr}
686 fi 648 EKDEDIR=${EPREFIX}/usr
687 EKDEDIR=${EPREFIX}${KDEDIR}
688 649
689 # Point pkg-config path to KDE *.pc files 650 # Point pkg-config path to KDE *.pc files
690 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" 651 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
691 # Point to correct QT plugins path 652 # Point to correct QT plugins path
692 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/" 653 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
833 QTEST_COLORED=1 794 QTEST_COLORED=1
834 795
835 # Shadow existing /usr installations 796 # Shadow existing /usr installations
836 unset KDEDIRS 797 unset KDEDIRS
837 798
838 # Handle kdeprefix-ed KDE
839 if [[ ${KDEDIR} != /usr ]]; then
840 # Override some environment variables - only when kdeprefix is different,
841 # to not break ccache/distcc
842 PATH="${EKDEDIR}/bin:${PATH}"
843
844 # Append library search path
845 append-ldflags -L"${EKDEDIR}/$(get_libdir)"
846
847 # Append full RPATH
848 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
849
850 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
851 # when more are present
852 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
853 fi
854
855 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling 799 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
856 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/lib/qt4) 800 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
857 #kde-config -path data unavailable when cross-compiling 801 #kde-config -path data unavailable when cross-compiling
858 tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/) 802 tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
859 803
860 # Handle kdeprefix in application itself
861 if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
862 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc 804 # sysconf needs to be /etc, not /usr/etc
863 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc) 805 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
864 fi
865 806
866 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then 807 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
867 mycmakeargs=(${mycmakeargs}) 808 mycmakeargs=(${mycmakeargs})
868 fi 809 fi
869 810
992 ewarn "With this setting you are unsupported by KDE team." 933 ewarn "With this setting you are unsupported by KDE team."
993 ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID." 934 ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
994 fi 935 fi
995 fi 936 fi
996 fi 937 fi
997 if has kdeprefix ${IUSE//+} && use kdeprefix; then
998 # warning about kdeprefix
999 echo
1000 ewarn "WARNING! You have the kdeprefix useflag enabled."
1001 eerror "This setting will be removed on or about 2011-06-06."
1002 ewarn "You are using this setup at your own risk and the kde team does not"
1003 ewarn "take responsibilities for dead kittens."
1004 echo
1005 fi
1006} 938}
1007 939
1008# @FUNCTION: kde4-base_pkg_postrm 940# @FUNCTION: kde4-base_pkg_postrm
1009# @DESCRIPTION: 941# @DESCRIPTION:
1010# Function to rebuild the KDE System Configuration Cache after an application has been removed. 942# Function to rebuild the KDE System Configuration Cache after an application has been removed.

Legend:
Removed from v.1.93  
changed lines
  Added in v.1.99

  ViewVC Help
Powered by ViewVC 1.1.20