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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.64 - (hide annotations) (download)
Sat Jun 26 01:33:21 2010 UTC (4 years, 2 months ago) by reavertm
Branch: MAIN
Changes since 1.63: +3 -3 lines
Add USE dep on accessibility for Qt packages, see bug 325461

1 reavertm 1.58 # Copyright 1999-2010 Gentoo Foundation
2 ingmar 1.1 # Distributed under the terms of the GNU General Public License v2
3 reavertm 1.64 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.63 2010/06/22 13:49:08 reavertm Exp $
4 ingmar 1.1
5     # @ECLASS: kde4-base.eclass
6     # @MAINTAINER:
7     # kde@gentoo.org
8 jmbsvicetto 1.13 # @BLURB: This eclass provides functions for kde 4.X ebuilds
9 ingmar 1.1 # @DESCRIPTION:
10 scarabeus 1.22 # The kde4-base.eclass provides support for building KDE4 based ebuilds
11 ingmar 1.1 # and KDE4 applications.
12     #
13 scarabeus 1.22 # NOTE: KDE 4 ebuilds by default define EAPI="2", this can be redefined but
14     # eclass will fail with version older than 2.
15    
16 reavertm 1.61 inherit kde4-functions base eutils
17    
18     get_build_type
19     if [[ ${BUILD_TYPE} = live ]]; then
20     if [[ ${KDEBASE} = kdevelop ]]; then
21     inherit git
22     else
23     inherit subversion
24     fi
25     fi
26    
27 scarabeus 1.52 # @ECLASS-VARIABLE: CMAKE_REQUIRED
28 scarabeus 1.44 # @DESCRIPTION:
29 scarabeus 1.47 # Specify if cmake buildsystem is being used. Possible values are 'always' and 'never'.
30     # Please note that if it's set to 'never' you need to explicitly override following phases:
31     # src_configure, src_compile, src_test and src_install.
32     # Defaults to 'always'.
33 scarabeus 1.54 : ${CMAKE_REQUIRED:=always}
34 reavertm 1.61 if [[ ${CMAKE_REQUIRED} = always ]]; then
35 scarabeus 1.47 buildsystem_eclass="cmake-utils"
36     export_fns="src_configure src_compile src_test src_install"
37 scarabeus 1.44 fi
38    
39 reavertm 1.61 # Verify KDE_MINIMAL (display QA notice in pkg_setup, still we need to fix it here)
40     if [[ -n ${KDE_MINIMAL} ]]; then
41     for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
42     [[ ${KDE_MINIMAL} = ${slot} ]] && KDE_MINIMAL_VALID=1 && break
43     done
44     unset slot
45     [[ -z ${KDE_MINIMAL_VALID} ]] && unset KDE_MINIMAL
46     else
47     KDE_MINIMAL_VALID=1
48     fi
49    
50     # @ECLASS-VARIABLE: KDE_MINIMAL
51     # @DESCRIPTION:
52     # This variable is used when KDE_REQUIRED is set, to specify required KDE minimal
53     # version for apps to work. Currently defaults to 4.3
54     # One may override this variable to raise version requirements.
55     # For possible values look at KDE_SLOTS and KDE_LIVE_SLOTS variables.
56     # Note that it is fixed to ${SLOT} for kde-base packages.
57     KDE_MINIMAL="${KDE_MINIMAL:-4.3}"
58 scarabeus 1.48
59 reavertm 1.61 # Set slot for packages in kde-base, koffice and kdevelop
60     case ${KDEBASE} in
61     kde-base)
62     # Determine SLOT from PVs
63     case ${PV} in
64     *.9999*) SLOT="${PV/.9999*/}" ;; # stable live
65     4.5* | 4.4.[6-9]*) SLOT="4.5" ;;
66     4.4* | 4.3.[6-9]*) SLOT="4.4" ;;
67     4.3*) SLOT="4.3" ;;
68     9999*) SLOT="live" ;; # regular live
69     *) die "Unsupported ${PV}" ;;
70     esac
71     KDE_MINIMAL="${SLOT}"
72     ;;
73     koffice)
74     SLOT="2"
75     ;;
76     kdevelop)
77     if [[ ${BUILD_TYPE} = live ]]; then
78     KDEVELOP_VERSION="9999"
79     KDEVPLATFORM_VERSION="9999"
80     else
81     case ${PN} in
82     kdevelop|quanta)
83     KDEVELOP_VERSION=${PV}
84     KDEVPLATFORM_VERSION="$(($(get_major_version)-3)).$(get_after_major_version)"
85     ;;
86     *)
87     KDEVELOP_VERSION="$(($(get_major_version)+3)).$(get_after_major_version)"
88     KDEVPLATFORM_VERSION=${PV}
89     esac
90     fi
91     SLOT="4"
92     ;;
93     esac
94    
95     slot_is_at_least 4.5 ${KDE_MINIMAL} && CMAKE_MIN_VERSION="2.6.4"
96 scarabeus 1.22
97 reavertm 1.61 inherit ${buildsystem_eclass}
98 scarabeus 1.47
99 reavertm 1.61 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare ${export_fns} pkg_postinst pkg_postrm
100 scarabeus 1.44
101 scarabeus 1.47 unset buildsystem_eclass
102     unset export_fns
103 ingmar 1.1
104 wired 1.43 case ${KDEBASE} in
105     kde-base)
106     HOMEPAGE="http://www.kde.org/"
107     LICENSE="GPL-2"
108     ;;
109     koffice)
110     HOMEPAGE="http://www.koffice.org/"
111     LICENSE="GPL-2"
112     ;;
113 reavertm 1.61 kdevelop)
114     HOMEPAGE="http://www.kdevelop.org/"
115     LICENSE="GPL-2"
116     ;;
117 wired 1.43 esac
118    
119 philantrop 1.7 # @ECLASS-VARIABLE: OPENGL_REQUIRED
120     # @DESCRIPTION:
121     # Is qt-opengl required? Possible values are 'always', 'optional' and 'never'.
122     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
123     OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}"
124    
125 abcd 1.56 # @ECLASS-VARIABLE: MULTIMEDIA_REQUIRED
126     # @DESCRIPTION:
127     # Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'.
128     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
129     MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}"
130    
131 scarabeus 1.31 # @ECLASS-VARIABLE: WEBKIT_REQUIRED
132     # @DESCRIPTION:
133     # Is qt-webkit requred? Possible values are 'always', 'optional' and 'never'.
134     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
135     WEBKIT_REQUIRED="${WEBKIT_REQUIRED:-never}"
136    
137 zlin 1.4 # @ECLASS-VARIABLE: CPPUNIT_REQUIRED
138     # @DESCRIPTION:
139     # Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
140     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
141     CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
142    
143 scarabeus 1.34 # @ECLASS-VARIABLE: KDE_REQUIRED
144     # @DESCRIPTION:
145     # Is kde required? Possible values are 'always', 'optional' and 'never'.
146     # This variable must be set before inheriting any eclasses. Defaults to 'always'
147     # If set to always or optional, KDE_MINIMAL may be overriden as well.
148     # Note that for kde-base packages this variable is fixed to 'always'.
149     KDE_REQUIRED="${KDE_REQUIRED:-always}"
150    
151 scarabeus 1.47 # Setup packages inheriting this eclass
152     case ${KDEBASE} in
153     kde-base)
154     if [[ $BUILD_TYPE = live ]]; then
155     # Disable tests for live ebuilds
156     RESTRICT+=" test"
157     # Live ebuilds in kde-base default to kdeprefix by default
158     IUSE+=" +kdeprefix"
159     else
160     # All other ebuild types default to -kdeprefix as before
161     IUSE+=" kdeprefix"
162     fi
163     # This code is to prevent portage from searching GENTOO_MIRRORS for
164     # packages that will never be mirrored. (As they only will ever be in
165     # the overlay).
166     case ${PV} in
167     *9999* | 4.?.[6-9]?)
168     RESTRICT+=" mirror"
169     ;;
170     esac
171     # Block installation of other SLOTS unless kdeprefix
172     RDEPEND+=" $(block_other_slots)"
173     ;;
174     esac
175 scarabeus 1.34
176 scarabeus 1.47 # @ECLASS-VARIABLE: QT_MINIMAL
177 scarabeus 1.39 # @DESCRIPTION:
178     # Determine version of qt we enforce as minimal for the package. 4.4.0 4.5.1..
179 scarabeus 1.47 # Currently defaults to 4.5.1 for KDE 4.3 and earlier
180 reavertm 1.61 # or 4.6.0 for KDE 4.4 and later
181 scarabeus 1.47 if slot_is_at_least 4.4 "${KDE_MINIMAL}"; then
182 abcd 1.55 QT_MINIMAL="${QT_MINIMAL:-4.6.0}"
183 scarabeus 1.47 fi
184    
185     QT_MINIMAL="${QT_MINIMAL:-4.5.1}"
186 scarabeus 1.39
187 scarabeus 1.34 # OpenGL dependencies
188     qtopengldepend="
189 scarabeus 1.47 >=x11-libs/qt-opengl-${QT_MINIMAL}:4
190 scarabeus 1.34 "
191     case ${OPENGL_REQUIRED} in
192     always)
193 wired 1.42 COMMONDEPEND+=" ${qtopengldepend}"
194 scarabeus 1.34 ;;
195     optional)
196 wired 1.42 IUSE+=" opengl"
197     COMMONDEPEND+=" opengl? ( ${qtopengldepend} )"
198 scarabeus 1.34 ;;
199     *) ;;
200     esac
201     unset qtopengldepend
202    
203 abcd 1.56 # MultiMedia dependencies
204     qtmultimediadepend="
205     >=x11-libs/qt-multimedia-${QT_MINIMAL}:4
206     "
207     case ${MULTIMEDIA_REQUIRED} in
208     always)
209     COMMONDEPEND+=" ${qtmultimediadepend}"
210     ;;
211     optional)
212     IUSE+=" multimedia"
213     COMMONDEPEND+=" multimedia? ( ${qtmultimediadepend} )"
214     ;;
215     *) ;;
216     esac
217     unset qtmultimediadepend
218    
219 scarabeus 1.34 # WebKit dependencies
220 scarabeus 1.44 case ${KDE_REQUIRED} in
221     always)
222     qtwebkitusedeps="[kde]"
223     ;;
224     optional)
225     qtwebkitusedeps="[kde?]"
226     ;;
227     *) ;;
228     esac
229 scarabeus 1.34 qtwebkitdepend="
230 scarabeus 1.47 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
231 scarabeus 1.34 "
232 scarabeus 1.44 unset qtwebkitusedeps
233 scarabeus 1.34 case ${WEBKIT_REQUIRED} in
234     always)
235 wired 1.42 COMMONDEPEND+=" ${qtwebkitdepend}"
236 scarabeus 1.34 ;;
237     optional)
238 wired 1.42 IUSE+=" webkit"
239     COMMONDEPEND+=" webkit? ( ${qtwebkitdepend} )"
240 scarabeus 1.34 ;;
241     *) ;;
242     esac
243     unset qtwebkitdepend
244    
245     # CppUnit dependencies
246     cppuintdepend="
247     dev-util/cppunit
248     "
249 scarabeus 1.22 case ${CPPUNIT_REQUIRED} in
250 zlin 1.4 always)
251 wired 1.42 DEPEND+=" ${cppuintdepend}"
252 scarabeus 1.22 ;;
253 zlin 1.4 optional)
254 wired 1.42 IUSE+=" test"
255     DEPEND+=" test? ( ${cppuintdepend} )"
256 scarabeus 1.22 ;;
257 scarabeus 1.34 *) ;;
258 zlin 1.4 esac
259 scarabeus 1.34 unset cppuintdepend
260    
261     # KDE dependencies
262     kdecommondepend="
263 scarabeus 1.47 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl]
264 reavertm 1.64 >=x11-libs/qt-gui-${QT_MINIMAL}:4[accessibility,dbus]
265     >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde]
266 scarabeus 1.47 >=x11-libs/qt-script-${QT_MINIMAL}:4
267     >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support]
268     >=x11-libs/qt-svg-${QT_MINIMAL}:4
269     >=x11-libs/qt-test-${QT_MINIMAL}:4
270 wired 1.42 !aqua? (
271     x11-libs/libXext
272     x11-libs/libXt
273     x11-libs/libXxf86vm
274     )
275 scarabeus 1.34 "
276 reavertm 1.61 #perl is not needed on host (+ difficult crosscompilation)
277     tc-is-cross-compiler || kdecommondepend="$kdecommondepend dev-lang/perl"
278    
279 scarabeus 1.34 if [[ ${PN} != kdelibs ]]; then
280     if [[ ${KDEBASE} = kde-base ]]; then
281 scarabeus 1.47 kdecommondepend+=" $(add_kdebase_dep kdelibs)"
282 alexxy 1.46 # libknotificationitem only when SLOT is 4.3
283 scarabeus 1.47 [[ ${PN} != libknotificationitem ]] && [[ ${SLOT} = 4.3 ]] && \
284     kdecommondepend+=" $(add_kdebase_dep libknotificationitem)"
285 scarabeus 1.34 else
286 wired 1.42 kdecommondepend+="
287 scarabeus 1.47 >=kde-base/kdelibs-${KDE_MINIMAL}
288 scarabeus 1.31 "
289 reavertm 1.61 if [[ ${KDEBASE} = kdevelop ]]; then
290     if [[ ${PN} != kdevplatform ]]; then
291     kdecommondepend+="
292     >=dev-util/kdevplatform-${KDEVPLATFORM_VERSION}
293     "
294     fi
295     fi
296 ingmar 1.1 fi
297     fi
298 scarabeus 1.34 kdedepend="
299 reavertm 1.60 dev-util/automoc
300 scarabeus 1.34 dev-util/pkgconfig
301 scarabeus 1.54 !aqua? (
302 abcd 1.55 || ( >=x11-libs/libXtst-1.1.0 <x11-proto/xextproto-7.1.0 )
303 scarabeus 1.54 x11-proto/xf86vidmodeproto
304     )
305 scarabeus 1.34 "
306     case ${KDE_REQUIRED} in
307     always)
308 wired 1.42 IUSE+=" aqua"
309     COMMONDEPEND+=" ${kdecommondepend}"
310     DEPEND+=" ${kdedepend}"
311 scarabeus 1.34 ;;
312     optional)
313 wired 1.42 IUSE+=" aqua kde"
314     COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
315     DEPEND+=" kde? ( ${kdedepend} )"
316 scarabeus 1.34 ;;
317     *) ;;
318     esac
319 scarabeus 1.54
320 scarabeus 1.34 unset kdecommondepend kdedepend
321    
322     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
323     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
324     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
325    
326     # Accumulate dependencies set by this eclass
327 wired 1.42 DEPEND+=" ${COMMONDEPEND}"
328     RDEPEND+=" ${COMMONDEPEND}"
329     unset COMMONDEPEND
330 ingmar 1.1
331 scarabeus 1.54 # Add experimental kdeenablefinal, disabled by default
332     IUSE+=" kdeenablefinal"
333    
334 ingmar 1.1 # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
335     # koffice ebuild, the URI should be set in the ebuild itself
336 scarabeus 1.30 case ${BUILD_TYPE} in
337 scarabeus 1.22 live)
338 scarabeus 1.30 SRC_URI=""
339 reavertm 1.61 if has subversion ${INHERITED}; then
340     # Determine branch URL based on live type
341     local branch_prefix
342     case ${PV} in
343     9999*)
344     # trunk
345     branch_prefix="trunk/KDE"
346     ;;
347     *)
348     # branch
349     branch_prefix="branches/KDE/${SLOT}"
350     # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
351     # @DESCRIPTION
352     # Suffix appended to ESVN_PROJECT depending on fetched branch.
353     # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
354     ESVN_PROJECT_SUFFIX="-${PV}"
355     ;;
356     esac
357     # @ECLASS-VARIABLE: ESVN_MIRROR
358     # @DESCRIPTION:
359     # This variable allows easy overriding of default kde mirror service
360     # (anonsvn) with anything else you might want to use.
361     ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
362     # Split ebuild, or extragear stuff
363     if [[ -n ${KMNAME} ]]; then
364     ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
365     if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
366     KMMODULE="${PN}"
367     fi
368     # Split kde-base/ ebuilds: (they reside in trunk/KDE)
369     case ${KMNAME} in
370     kdebase-*)
371     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
372     ;;
373     kdelibs-*)
374     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
375     ;;
376     kdereview*)
377     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
378     ;;
379     kdesupport)
380     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
381     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
382     ;;
383     kde*)
384     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
385     ;;
386     extragear*|playground*)
387     # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
388     # build packages from same svn location.
389     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
390     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
391     ;;
392     koffice)
393     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
394     ;;
395     *)
396     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
397     ;;
398     esac
399     else
400     # kdelibs, kdepimlibs
401     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
402     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
403     fi
404     # @ECLASS-VARIABLE: ESVN_UP_FREQ
405     # @DESCRIPTION:
406     # This variable is used for specifying the timeout between svn synces
407     # for kde-base and koffice modules. Does not affect misc apps.
408     # Default value is 1 hour.
409     [[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
410     elif has git ${INHERITED}; then
411 scarabeus 1.34 if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
412 jmbsvicetto 1.25 KMMODULE="${PN}"
413 scarabeus 1.22 fi
414 reavertm 1.61 case ${KDEBASE} in
415     kdevelop)
416     EGIT_REPO_URI="git://gitorious.org/${KMNAME}/${KMMODULE}.git"
417 scarabeus 1.22 ;;
418     esac
419 reavertm 1.61 fi
420 scarabeus 1.22 ;;
421     *)
422 scarabeus 1.30 if [[ -n ${KDEBASE} ]]; then
423 scarabeus 1.22 if [[ -n ${KMNAME} ]]; then
424 scarabeus 1.30 case ${KMNAME} in
425     kdebase-apps)
426     _kmname="kdebase" ;;
427     *)
428 scarabeus 1.34 _kmname="${KMNAME}" ;;
429 scarabeus 1.30 esac
430 scarabeus 1.22 else
431     _kmname=${PN}
432     fi
433     _kmname_pv="${_kmname}-${PV}"
434     case ${KDEBASE} in
435     kde-base)
436     case ${PV} in
437 reavertm 1.58 4.[34].8[05] | 4.[34].9[0568])
438 scarabeus 1.37 # block for normally packed unstable releases
439     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
440 reavertm 1.58 4.[34].[6-9]*)
441 scarabeus 1.54 # Repacked tarballs: need to depend on xz-utils to ensure that they can be unpacked
442 reavertm 1.61 SRC_URI="http://dev.gentooexperimental.org/~alexxy/kde/${PV}/src/${_kmname_pv}.tar.xz"
443 scarabeus 1.54 DEPEND+=" app-arch/xz-utils"
444     ;;
445 scarabeus 1.22 *) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
446     esac
447     ;;
448     koffice)
449 scarabeus 1.38 case ${PV} in
450 reavertm 1.61 2.1.[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
451 tampakrap 1.53 *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
452 scarabeus 1.38 esac
453 reavertm 1.61 ;;
454     kdevelop)
455     SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
456     ;;
457 ingmar 1.1 esac
458 scarabeus 1.30 unset _kmname _kmname_pv
459     fi
460 scarabeus 1.22 ;;
461     esac
462 ingmar 1.1
463     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
464    
465     # @ECLASS-VARIABLE: PREFIX
466     # @DESCRIPTION:
467 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
468     # kde-base packages go into KDE4 installation directory (KDEDIR) by default.
469 wired 1.42 # No matter the PREFIX, package will be built against KDE installed in KDEDIR.
470 ingmar 1.1
471     # @FUNCTION: kde4-base_pkg_setup
472     # @DESCRIPTION:
473 scarabeus 1.34 # Do the basic kdeprefix KDEDIR settings and determine with which kde should
474     # optional applications link
475 ingmar 1.1 kde4-base_pkg_setup() {
476 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
477 ingmar 1.1
478 scarabeus 1.47 # Prefix compat:
479 abcd 1.56 if [[ ${EAPI} == 2 ]] && ! use prefix; then
480     EPREFIX=
481     EROOT=${ROOT}
482     fi
483    
484 scarabeus 1.47 # Append missing trailing slash character
485     [[ ${EROOT} = */ ]] || EROOT+="/"
486    
487 scarabeus 1.34 # QA ebuilds
488     [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})."
489    
490     # Don't set KDEHOME during compilation, it will cause access violations
491 jmbsvicetto 1.13 unset KDEHOME
492    
493 scarabeus 1.34 if [[ ${KDEBASE} = kde-base ]]; then
494     if use kdeprefix; then
495 reavertm 1.61 KDEDIR=/usr/kde/${SLOT}
496 scarabeus 1.34 else
497 abcd 1.57 KDEDIR=/usr
498 scarabeus 1.34 fi
499 abcd 1.56 : ${PREFIX:=${KDEDIR}}
500 scarabeus 1.29 else
501 scarabeus 1.34 # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
502     KDEDIR=
503     local kde_minimal_met
504     for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
505     [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
506     if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
507     if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
508 abcd 1.57 KDEDIR=/usr/kde/${slot}
509 scarabeus 1.34 else
510 abcd 1.57 KDEDIR=/usr
511 scarabeus 1.34 fi
512     break;
513     fi
514     done
515 scarabeus 1.37 unset slot
516 scarabeus 1.41
517     # Bail out if kdelibs required but not found
518     if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
519     [[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
520     else
521 abcd 1.57 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
522 scarabeus 1.41 fi
523    
524 abcd 1.57 : ${PREFIX:=/usr}
525 jmbsvicetto 1.13 fi
526 abcd 1.57 EKDEDIR=${EPREFIX}${KDEDIR}
527    
528 wired 1.42 # Point pkg-config path to KDE *.pc files
529 abcd 1.57 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
530 wired 1.42 # Point to correct QT plugins path
531 abcd 1.57 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
532 jmbsvicetto 1.13
533 scarabeus 1.47 # Fix XDG collision with sandbox
534     export XDG_CONFIG_HOME="${T}"
535 zlin 1.4 }
536    
537     # @FUNCTION: kde4-base_src_unpack
538     # @DESCRIPTION:
539     # This function unpacks the source tarballs for KDE4 applications.
540 ingmar 1.1 kde4-base_src_unpack() {
541 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
542 ingmar 1.1
543 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
544 reavertm 1.61 if has subversion ${INHERITED}; then
545     migrate_store_dir
546     subversion_src_unpack
547     elif has git ${INHERITED}; then
548     git_src_unpack
549     fi
550 reavertm 1.58 elif [[ ${EAPI} == 2 ]]; then
551 scarabeus 1.54 local file
552     for file in ${A}; do
553 reavertm 1.58 # This setup is because EAPI <= 2 cannot unpack *.tar.xz files
554 scarabeus 1.54 # directly, so we do it ourselves (using the exact same code as portage)
555     case ${file} in
556     *.tar.xz)
557     echo ">>> Unpacking ${file} to ${PWD}"
558     xz -dc "${DISTDIR}"/${file} | tar xof -
559     assert "failed unpacking ${file}"
560     ;;
561     *)
562     unpack ${file}
563     ;;
564     esac
565     done
566 ingmar 1.1 else
567 reavertm 1.58 # For EAPI >= 3, we can just use unpack() directly
568 scarabeus 1.54 unpack ${A}
569 ingmar 1.1 fi
570 scarabeus 1.22 }
571 ingmar 1.1
572 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
573 scarabeus 1.22 # @DESCRIPTION:
574     # General pre-configure and pre-compile function for KDE4 applications.
575     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
576 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
577     # in kde4-functions.eclass(5) for further details.
578 scarabeus 1.22 kde4-base_src_prepare() {
579     debug-print-function ${FUNCNAME} "$@"
580 zlin 1.8
581     # Only enable selected languages, used for KDE extragear apps.
582 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
583 zlin 1.8 enable_selected_linguas
584     fi
585 ingmar 1.1
586 wired 1.42 # Enable/disable handbooks for kde4-base packages
587 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
588     # kdelibs inherits kde4-base but handle installing the handbook itself
589 wired 1.42 if ! has kde4-meta ${INHERITED}; then
590 scarabeus 1.44 has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas
591 wired 1.42 fi
592    
593 reavertm 1.61 # SCM bootstrap
594     if [[ ${BUILD_TYPE} = live ]]; then
595     if has subversion ${INHERITED}; then
596     subversion_src_prepare
597     elif has git ${INHERITED}; then
598     git_src_prepare
599     fi
600     fi
601 reavertm 1.58
602     # Apply patches
603 scarabeus 1.22 base_src_prepare
604 reavertm 1.58 epatch_user
605 scarabeus 1.20
606 scarabeus 1.22 # Save library dependencies
607 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
608 scarabeus 1.22 save_library_dependencies
609     fi
610 scarabeus 1.20
611 scarabeus 1.22 # Inject library dependencies
612 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
613 scarabeus 1.22 load_library_dependencies
614 jmbsvicetto 1.13 fi
615 ingmar 1.1 }
616    
617     # @FUNCTION: kde4-base_src_configure
618     # @DESCRIPTION:
619     # Function for configuring the build of KDE4 applications.
620     kde4-base_src_configure() {
621     debug-print-function ${FUNCNAME} "$@"
622    
623     # Build tests in src_test only, where we override this value
624 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
625 ingmar 1.1
626 scarabeus 1.54 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
627 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
628 scarabeus 1.54 fi
629    
630 scarabeus 1.38 if has debug ${IUSE//+} && use debug; then
631 scarabeus 1.54 # Set "real" debug mode
632 scarabeus 1.38 CMAKE_BUILD_TYPE="Debugfull"
633 scarabeus 1.54 else
634     # Handle common release builds
635     append-cppflags -DQT_NO_DEBUG
636 scarabeus 1.38 fi
637    
638 ingmar 1.1 # Set distribution name
639 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
640 ingmar 1.1
641     # Here we set the install prefix
642 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
643 jmbsvicetto 1.13
644 wired 1.42 # Use colors
645 ingmar 1.1 QTEST_COLORED=1
646 jmbsvicetto 1.13
647 scarabeus 1.34 # Shadow existing /usr installations
648     unset KDEDIRS
649    
650 scarabeus 1.45 # Handle kdeprefix-ed KDE
651 abcd 1.57 if [[ ${KDEDIR} != /usr ]]; then
652 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
653     # to not break ccache/distcc
654 abcd 1.57 PATH="${EKDEDIR}/bin:${PATH}"
655 reavertm 1.61
656     # Append library search path
657     append-ldflags -L"${EKDEDIR}/$(get_libdir)"
658 scarabeus 1.37
659     # Append full RPATH
660 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
661 scarabeus 1.34
662 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
663 scarabeus 1.34 # when more are present
664 abcd 1.57 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
665 scarabeus 1.45 fi
666    
667 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
668     tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/lib/qt4)
669     #kde-config -path data unavailable when cross-compiling
670     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
671    
672 scarabeus 1.45 # Handle kdeprefix in application itself
673     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
674 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
675 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
676     fi
677    
678 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
679 abcd 1.56 mycmakeargs=(${mycmakeargs})
680 scarabeus 1.22 fi
681    
682 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
683 scarabeus 1.34
684     cmake-utils_src_configure
685 scarabeus 1.22 }
686    
687     # @FUNCTION: kde4-base_src_compile
688     # @DESCRIPTION:
689     # General function for compiling KDE4 applications.
690     kde4-base_src_compile() {
691     debug-print-function ${FUNCNAME} "$@"
692    
693 wired 1.42 cmake-utils_src_compile "$@"
694 ingmar 1.1 }
695    
696     # @FUNCTION: kde4-base_src_test
697     # @DESCRIPTION:
698     # Function for testing KDE4 applications.
699     kde4-base_src_test() {
700     debug-print-function ${FUNCNAME} "$@"
701    
702     # Override this value, set in kde4-base_src_configure()
703 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
704 scarabeus 1.30 cmake-utils_src_configure
705     kde4-base_src_compile
706 ingmar 1.1
707     cmake-utils_src_test
708     }
709    
710     # @FUNCTION: kde4-base_src_install
711     # @DESCRIPTION:
712     # Function for installing KDE4 applications.
713     kde4-base_src_install() {
714     debug-print-function ${FUNCNAME} "$@"
715    
716 abcd 1.57 # Prefix support, for usage in ebuilds
717     if [[ ${EAPI} == 2 ]] && ! use prefix; then
718     ED=${D}
719     fi
720    
721 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
722 scarabeus 1.22 install_library_dependencies
723     fi
724    
725 reavertm 1.61 # Install common documentation of KDE4 applications
726 ingmar 1.1 local doc
727 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
728 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
729 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && dodoc "${doc}"
730 reavertm 1.62 done
731     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
732 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
733 ingmar 1.1 done
734     fi
735 reavertm 1.61
736     cmake-utils_src_install
737 ingmar 1.1 }
738    
739     # @FUNCTION: kde4-base_pkg_postinst
740     # @DESCRIPTION:
741     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
742     kde4-base_pkg_postinst() {
743 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
744    
745 ingmar 1.1 buildsycoca
746 scarabeus 1.36
747     if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
748     echo
749 wired 1.42 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
750 scarabeus 1.36 einfo "Use it at your own risk."
751     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
752     echo
753 scarabeus 1.39 elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
754     # warning about kdeprefix for non-live users
755     echo
756 wired 1.42 ewarn "WARNING! You have the kdeprefix useflag enabled."
757     ewarn "This setting is strongly discouraged and might lead to potential trouble"
758 scarabeus 1.39 ewarn "with KDE update strategies."
759 wired 1.42 ewarn "You are using this setup at your own risk and the kde team does not"
760 scarabeus 1.39 ewarn "take responsibilities for dead kittens."
761     echo
762 scarabeus 1.36 fi
763 reavertm 1.58 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! has_version 'kde-base/kdebase-runtime-meta' && ! has_version 'kde-base/kdebase-startkde'; then
764     # warn about not supported approach
765     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
766     echo
767     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
768     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
769     ewarn "With this setting you are unsupported by KDE team."
770     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
771     fi
772     fi
773 ingmar 1.1 }
774    
775     # @FUNCTION: kde4-base_pkg_postrm
776     # @DESCRIPTION:
777     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
778     kde4-base_pkg_postrm() {
779 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
780    
781 ingmar 1.1 buildsycoca
782     }

  ViewVC Help
Powered by ViewVC 1.1.20