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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.67 - (hide annotations) (download)
Thu Aug 12 19:32:23 2010 UTC (3 years, 11 months ago) by reavertm
Branch: MAIN
Changes since 1.66: +8 -7 lines
Handle USE=debug in the same way as cmake-utils, do not abuse it with CMAkE_BUILD_TYPE=Debugfull (it can be done when needed anyway - see CMAKE_BUILD_TYPE section in cmake-utils.eclass(5))

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.67 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.66 2010/08/09 15:59:04 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 reavertm 1.67 if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
649     # Handle debug and release codepaths
650     if has debug ${IUSE//+} && use debug; then
651     append-cppflags -DDEBUG
652     else
653     append-cppflags -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM
654     fi
655 scarabeus 1.38 fi
656    
657 ingmar 1.1 # Set distribution name
658 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
659 ingmar 1.1
660     # Here we set the install prefix
661 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
662 jmbsvicetto 1.13
663 wired 1.42 # Use colors
664 ingmar 1.1 QTEST_COLORED=1
665 jmbsvicetto 1.13
666 scarabeus 1.34 # Shadow existing /usr installations
667     unset KDEDIRS
668    
669 scarabeus 1.45 # Handle kdeprefix-ed KDE
670 abcd 1.57 if [[ ${KDEDIR} != /usr ]]; then
671 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
672     # to not break ccache/distcc
673 abcd 1.57 PATH="${EKDEDIR}/bin:${PATH}"
674 reavertm 1.61
675     # Append library search path
676     append-ldflags -L"${EKDEDIR}/$(get_libdir)"
677 scarabeus 1.37
678     # Append full RPATH
679 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
680 scarabeus 1.34
681 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
682 scarabeus 1.34 # when more are present
683 abcd 1.57 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
684 scarabeus 1.45 fi
685    
686 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
687     tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/lib/qt4)
688     #kde-config -path data unavailable when cross-compiling
689     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
690    
691 scarabeus 1.45 # Handle kdeprefix in application itself
692     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
693 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
694 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
695     fi
696    
697 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
698 abcd 1.56 mycmakeargs=(${mycmakeargs})
699 scarabeus 1.22 fi
700    
701 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
702 scarabeus 1.34
703     cmake-utils_src_configure
704 scarabeus 1.22 }
705    
706     # @FUNCTION: kde4-base_src_compile
707     # @DESCRIPTION:
708     # General function for compiling KDE4 applications.
709     kde4-base_src_compile() {
710     debug-print-function ${FUNCNAME} "$@"
711    
712 wired 1.42 cmake-utils_src_compile "$@"
713 ingmar 1.1 }
714    
715     # @FUNCTION: kde4-base_src_test
716     # @DESCRIPTION:
717     # Function for testing KDE4 applications.
718     kde4-base_src_test() {
719     debug-print-function ${FUNCNAME} "$@"
720    
721     # Override this value, set in kde4-base_src_configure()
722 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
723 scarabeus 1.30 cmake-utils_src_configure
724     kde4-base_src_compile
725 ingmar 1.1
726     cmake-utils_src_test
727     }
728    
729     # @FUNCTION: kde4-base_src_install
730     # @DESCRIPTION:
731     # Function for installing KDE4 applications.
732     kde4-base_src_install() {
733     debug-print-function ${FUNCNAME} "$@"
734    
735 abcd 1.57 # Prefix support, for usage in ebuilds
736     if [[ ${EAPI} == 2 ]] && ! use prefix; then
737     ED=${D}
738     fi
739    
740 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
741 scarabeus 1.22 install_library_dependencies
742     fi
743    
744 reavertm 1.61 # Install common documentation of KDE4 applications
745 ingmar 1.1 local doc
746 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
747 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
748 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && dodoc "${doc}"
749 reavertm 1.62 done
750     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
751 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
752 ingmar 1.1 done
753     fi
754 reavertm 1.61
755     cmake-utils_src_install
756 ingmar 1.1 }
757    
758     # @FUNCTION: kde4-base_pkg_postinst
759     # @DESCRIPTION:
760     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
761     kde4-base_pkg_postinst() {
762 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
763    
764 ingmar 1.1 buildsycoca
765 scarabeus 1.36
766     if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
767     echo
768 wired 1.42 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
769 scarabeus 1.36 einfo "Use it at your own risk."
770     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
771     echo
772 scarabeus 1.39 elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
773     # warning about kdeprefix for non-live users
774     echo
775 wired 1.42 ewarn "WARNING! You have the kdeprefix useflag enabled."
776     ewarn "This setting is strongly discouraged and might lead to potential trouble"
777 scarabeus 1.39 ewarn "with KDE update strategies."
778 wired 1.42 ewarn "You are using this setup at your own risk and the kde team does not"
779 scarabeus 1.39 ewarn "take responsibilities for dead kittens."
780     echo
781 scarabeus 1.36 fi
782 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
783     # warn about not supported approach
784     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
785     echo
786     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
787     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
788     ewarn "With this setting you are unsupported by KDE team."
789     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
790     fi
791     fi
792 ingmar 1.1 }
793    
794     # @FUNCTION: kde4-base_pkg_postrm
795     # @DESCRIPTION:
796     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
797     kde4-base_pkg_postrm() {
798 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
799    
800 ingmar 1.1 buildsycoca
801     }

  ViewVC Help
Powered by ViewVC 1.1.20