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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.66 - (hide annotations) (download)
Mon Aug 9 15:59:04 2010 UTC (4 years, 1 month ago) by reavertm
Branch: MAIN
Changes since 1.65: +14 -19 lines
Merge changes from overlay: remove kde 4.3 support, do not call epatch_user twice, bump cmake dep

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

  ViewVC Help
Powered by ViewVC 1.1.20