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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.23 - (show annotations) (download)
Mon Aug 3 21:59:53 2009 UTC (4 years, 11 months ago) by wired
Branch: MAIN
Changes since 1.22: +92 -105 lines
synced kde4 eclasses with new ones from kde-testing overlay

1 # Copyright 1999-2009 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-meta.eclass,v 1.18 2009/05/09 13:23:15 scarabeus Exp $
4 #
5 # @ECLASS: kde4-meta.eclass
6 # @MAINTAINER:
7 # kde@gentoo.org
8 # @BLURB: Eclass for writing "split" KDE packages.
9 # @DESCRIPTION:
10 # This eclass provides all necessary functions for writing split KDE ebuilds.
11 #
12 # You must define KMNAME to use this eclass, and do so before inheriting it. All other variables are optional.
13 # Do not include the same item in more than one of KMMODULE, KMMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY.
14
15 inherit kde4-base versionator
16
17 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_postinst pkg_postrm
18
19 if [[ -z ${KMNAME} ]]; then
20 die "kde4-meta.eclass inherited but KMNAME not defined - broken ebuild"
21 fi
22
23 case ${KDEBASE} in
24 kde-base)
25 HOMEPAGE="http://www.kde.org/"
26 LICENSE="GPL-2"
27 ;;
28 koffice)
29 HOMEPAGE="http://www.koffice.org/"
30 LICENSE="GPL-2"
31 ;;
32 esac
33
34 # Add khelpcenter dependency when installing handbooks
35 if [[ ${PN} != khelpcenter ]] && has handbook ${IUSE//+}; then
36 RDEPEND+=" handbook? ( >=kde-base/khelpcenter-${PV}:${SLOT}[kdeprefix=] )"
37 fi
38
39 # Add dependencies that all packages in a certain module share.
40 case ${KMNAME} in
41 kdebase|kdebase-apps|kdebase-workspace|kdebase-runtime|kdegraphics)
42 COMMONDEPEND+=" >=kde-base/qimageblitz-0.0.4"
43 ;;
44 kdenetwork)
45 COMMONDEPEND+=" >=kde-base/kdepimlibs-${PV}:${SLOT}[kdeprefix=]"
46 ;;
47 kdepim|kdepim-runtime)
48 COMMONDEPEND+="
49 dev-libs/boost
50 >=kde-base/kdepimlibs-${PV}:${SLOT}[kdeprefix=]
51 "
52 case ${PN} in
53 akregator|kaddressbook|kjots|kmail|knode|knotes|korganizer|ktimetracker)
54 IUSE+=" +kontact"
55 RDEPEND+=" kontact? ( >=kde-base/kontactinterfaces-${PV}:${SLOT}[kdeprefix=] )"
56 ;;
57 esac
58 ;;
59 kdegames)
60 if [[ ${PN} != libkdegames ]]; then
61 COMMONDEPEND+=" >=kde-base/libkdegames-${PV}:${SLOT}[kdeprefix=] "
62 fi
63 ;;
64 koffice)
65 [[ ${PN} != koffice-data ]] && IUSE+=" debug"
66 RDEPEND+="
67 !app-office/${PN}:0
68 !app-office/koffice:0
69 !app-office/koffice-meta:0
70 "
71 if has openexr ${IUSE//+}; then
72 COMMONDEPEND+=" media-gfx/imagemagick[openexr?]"
73 else
74 COMMONDEPEND+=" media-gfx/imagemagick"
75 fi
76
77 COMMONDEPEND+="
78 dev-cpp/eigen:2
79 media-libs/fontconfig
80 media-libs/freetype:2
81 "
82 if [[ ${PN} != koffice-libs && ${PN} != koffice-data ]]; then
83 COMMONDEPEND+=" >=app-office/koffice-libs-${PV}:${SLOT}"
84 fi
85 ;;
86 esac
87
88 DEPEND+=" ${COMMONDEPEND}"
89 RDEPEND+=" ${COMMONDEPEND}"
90 unset COMMONDEPEND
91
92 debug-print "line ${LINENO} ${ECLASS}: DEPEND ${DEPEND} - after metapackage-specific dependencies"
93 debug-print "line ${LINENO} ${ECLASS}: RDEPEND ${RDEPEND} - after metapackage-specific dependencies"
94
95 # Useful to build kde4-meta style stuff from extragear/playground (plasmoids etc)
96 case ${BUILD_TYPE} in
97 live)
98 case ${KMNAME} in
99 extragear*|playground*)
100 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
101 ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
102 ;;
103 esac
104 ;;
105 esac
106
107 # @ECLASS-VARIABLE: KMNAME
108 # @DESCRIPTION:
109 # Name of the parent-module (e.g. kdebase, kdepim, ...). You _must_ set it
110 # _before_ inheriting this eclass, (unlike the other parameters), since it's
111 # used to set $SRC_URI.
112
113 # @ECLASS-VARIABLE: KMMODULE
114 # @DESCRIPTION:
115 # Specify exactly one subdirectory of $KMNAME here. Defaults to $PN.
116 # The subdirectory listed here is treated exactly like items in $KMEXTRA.
117 #
118 # Example: The ebuild name of "kdebase/l10n" is kde-base/kdebase-l10n, because
119 # just 'l10n' would be too confusing. Hence it sets KMMODULE="l10n".
120
121 # @ECLASS-VARIABLE: KMNOMODULE
122 # @DESCRIPTION:
123 # If set to "true", $KMMODULE doesn't have to be defined.
124 #
125 # Example usage: If you're installing subdirectories of a package, like plugins,
126 # you mark the top subdirectory (containing the package) as $KMEXTRACTONLY, and
127 # set KMNOMODULE="true".
128 if [[ -z ${KMMODULE} && ${KMNOMODULE} != true ]]; then
129 KMMODULE=${PN}
130 fi
131
132 # @ECLASS-VARIABLE: KMEXTRA
133 # @DESCRIPTION:
134 # All subdirectories listed here will be extracted, compiled & installed.
135 # $KMMODULE is always added to $KMEXTRA.
136 # If the handbook USE-flag is set, and if this directory exists,
137 # then "doc/$KMMODULE" is added to $KMEXTRA. In other cases, this should be
138 # handled in the ebuild.
139 # If the documentation is in a different subdirectory, you should add it to KMEXTRA.
140
141 # @ECLASS-VARIABLE: KMCOMPILEONLY
142 # @DESCRIPTION:
143 # All subdirectories listed here will be extracted & compiled, but not installed.
144
145 # TODO: better formulation may be needed
146 # @ECLASS-VARIABLE: KMEXTRACTONLY
147 # @DESCRIPTION:
148 # All subdirectories listed here will be extracted, but neither compiled nor installed.
149 # This can be used to avoid compilation in a subdirectory of a directory in $KMMODULE or $KMEXTRA
150
151 # @ECLASS-VARIABLE: KMTARPARAMS
152 # @DESCRIPTION:
153 # Specify extra parameters to pass to tar, in kde4-meta_src_extract.
154 # '-xpf -j' are passed to tar by default.
155
156 # @FUNCTION: kde4-meta_pkg_setup
157 # @DESCRIPTION:
158 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in
159 # split ebuilds.
160 kde4-meta_pkg_setup() {
161 debug-print-function ${FUNCNAME} "$@"
162
163 kde4-base_pkg_setup
164 }
165
166 # @FUNCTION: kde4-meta_src_unpack
167 # @DESCRIPTION:
168 # This function unpacks the source for split ebuilds. See also
169 # kde4-meta-src_extract.
170 kde4-meta_src_unpack() {
171 debug-print-function ${FUNCNAME} "$@"
172
173 if [[ ${BUILD_TYPE} = live ]]; then
174 migrate_store_dir
175 S="${WORKDIR}/${P}"
176 mkdir -p "${S}"
177 ESVN_RESTRICT="export" subversion_src_unpack
178 subversion_wc_info
179 subversion_bootstrap
180 kde4-meta_src_extract
181 else
182 kde4-meta_src_extract
183 fi
184 }
185
186 # FIXME: the difference between kde4-meta_src_extract and kde4-meta_src_unpack?
187
188 # @FUNCTION: kde4-meta_src_extract
189 # @DESCRIPTION:
190 # A function to unpack the source for a split KDE ebuild.
191 # Also see KMMODULE, KMNOMODULE, KMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY and
192 # KMTARPARAMS.
193 kde4-meta_src_extract() {
194 debug-print-function ${FUNCNAME} "$@"
195
196 if [[ ${BUILD_TYPE} = live ]]; then
197 local rsync_options subdir kmnamedir targetdir
198 # Export working copy to ${S}
199 einfo "Exporting parts of working copy to ${S}"
200 kde4-meta_create_extractlists
201
202 rsync_options="--group --links --owner --perms --quiet --exclude=.svn/"
203
204 # Copy ${KMNAME} non-recursively (toplevel files)
205 rsync ${rsync_options} "${ESVN_WC_PATH}"/${kmnamedir}* "${S}" \
206 || die "${ESVN}: can't export toplevel files to '${S}'."
207 # Copy cmake directory
208 if [[ -d "${ESVN_WC_PATH}/${kmnamedir}cmake" ]]; then
209 rsync --recursive ${rsync_options} "${ESVN_WC_PATH}/${kmnamedir}cmake" "${S}" \
210 || die "${ESVN}: can't export cmake files to '${S}'."
211 fi
212 # Copy all subdirectories
213 for subdir in $(__list_needed_subdirectories); do
214 targetdir=""
215 if [[ $subdir = doc/* && ! -e "$ESVN_WC_PATH/$kmnamedir$subdir" ]]; then
216 continue
217 fi
218
219 [[ ${subdir%/} = */* ]] && targetdir=${subdir%/} && targetdir=${targetdir%/*} && mkdir -p "${S}/${targetdir}"
220 rsync --recursive ${rsync_options} "${ESVN_WC_PATH}/${kmnamedir}${subdir%/}" "${S}/${targetdir}" \
221 || die "${ESVN}: can't export subdirectory '${subdir}' to '${S}/${targetdir}'."
222 done
223
224 if [[ ${KMNAME} = kdebase-runtime && ${PN} != kdebase-data ]]; then
225 sed -i -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' \
226 "${S}"/CMakeLists.txt || die "Sed to exclude bin/kde4 failed"
227 fi
228 else
229 local abort tarball tarfile f extractlist moduleprefix postfix
230 case ${PV} in
231 4.3.85 | 4.3.90 | 4.3.95 | 4.3.96 | 4.3.98 | 4.2.85 | 4.2.90 | 4.2.95 | 4.2.96 | 4.2.98)
232 # block for normally packed upstream unstable snapshots
233 KMTARPARAMS+=" --bzip2" # bz2
234 postfix="bz2"
235 ;;
236 4.2.9* | 4.2.8* | 4.2.7* | 4.2.6* | 4.3.9* | 4.3.8* | 4.3.7* | 4.3.6*)
237 KMTARPARAMS+=" --lzma" # lzma
238 postfix="lzma"
239 ;;
240 *)
241 KMTARPARAMS+=" --bzip2" # bz2
242 postfix="bz2"
243 ;;
244 esac
245 case ${KMNAME} in
246 kdebase-apps)
247 # kdebase/apps -> kdebase-apps
248 tarball="kdebase-${PV}.tar.${postfix}"
249 # Go one level deeper for kdebase-apps in tarballs
250 moduleprefix=apps/
251 KMTARPARAMS+=" --transform=s|apps/||"
252 ;;
253 *)
254 # Create tarball name from module name (this is the default)
255 tarball="${KMNAME}-${PV}.tar.${postfix}"
256 ;;
257 esac
258
259 # Full path to source tarball
260 tarfile="${DISTDIR}/${tarball}"
261
262 # Detect real toplevel dir from tarball name - it will be used upon extraction
263 # and in __list_needed_subdirectories
264 topdir="${tarball%.tar.*}/"
265
266 ebegin "Unpacking parts of ${tarball} to ${WORKDIR}"
267
268 kde4-meta_create_extractlists
269
270 for f in cmake/ CMakeLists.txt ConfigureChecks.cmake config.h.cmake \
271 AUTHORS COPYING INSTALL README NEWS ChangeLog
272 do
273 extractlist+=" ${topdir}${moduleprefix}${f}"
274 done
275 extractlist+=" $(__list_needed_subdirectories)"
276
277 pushd "${WORKDIR}" > /dev/null
278 [[ -n ${KDE4_STRICTER} ]] && echo tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} >&2
279 tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} 2> /dev/null
280
281 # Default $S is based on $P; rename the extracted directory to match $S if necessary
282 mv ${topdir} ${P} || die "Died while moving \"${topdir}\" to \"${P}\""
283
284 popd > /dev/null
285
286 eend $?
287
288 # We need to clear it here to make verification below work
289 unset moduleprefix
290
291 if [[ -n ${KDE4_STRICTER} ]]; then
292 for f in $(__list_needed_subdirectories fatal); do
293 if [[ ! -e "${S}/${f#*/}" ]]; then
294 eerror "'${f#*/}' is missing"
295 abort=true
296 fi
297 done
298 [[ -n ${abort} ]] && die "There were missing files."
299 fi
300
301 # We don't need it anymore
302 unset topdir
303 fi
304 }
305
306 # @FUNCTION: kde4-meta_create_extractlists
307 # @DESCRIPTION:
308 # Create lists of files and subdirectories to extract.
309 # Also see descriptions of KMMODULE, KMNOMODULE, KMEXTRA, KMCOMPILEONLY,
310 # KMEXTRACTONLY and KMTARPARAMS.
311 kde4-meta_create_extractlists() {
312 debug-print-function ${FUNCNAME} "$@"
313
314 # TODO change to KMEXTRA for more strict check
315 if has handbook ${IUSE//+} && use handbook && [[ -n ${KMMODULE} ]]; then
316 # We use the basename of $KMMODULE because $KMMODULE can contain
317 # the path to the module subdirectory.
318 KMEXTRA_NONFATAL+="
319 doc/${KMMODULE##*/}"
320 fi
321
322 # Add some CMake-files to KMEXTRACTONLY.
323 # Note that this actually doesn't include KMEXTRA handling.
324 # In those cases you should care to add the relevant files to KMEXTRACTONLY
325 case ${KMNAME} in
326 kdebase)
327 KMEXTRACTONLY+="
328 apps/config-apps.h.cmake
329 apps/ConfigureChecks.cmake"
330 ;;
331 kdebase-apps)
332 KMEXTRACTONLY+="
333 config-apps.h.cmake
334 ConfigureChecks.cmake"
335 ;;
336 kdebase-runtime)
337 KMEXTRACTONLY+="
338 config-runtime.h.cmake"
339 ;;
340 kdebase-workspace)
341 KMEXTRACTONLY+="
342 config-unix.h.cmake
343 ConfigureChecks.cmake
344 config-workspace.h.cmake
345 config-X11.h.cmake
346 startkde.cmake
347 KDE4WorkspaceConfig.cmake.in"
348 ;;
349 kdegames)
350 if [[ ${PN} != libkdegames ]]; then
351 KMEXTRACTONLY+="
352 libkdegames/"
353 fi
354 ;;
355 kdepim)
356 if [[ ${PN} != libkdepim ]]; then
357 KMEXTRACTONLY+="
358 libkdepim/"
359 fi
360 case ${SLOT} in
361 4.3|4.4|live)
362 KMEXTRACTONLY+="
363 kdepim-version.h
364 config-enterprise.h.cmake"
365 ;;
366 esac
367 KMEXTRACTONLY+="
368 kleopatra/ConfigureChecks.cmake"
369 if has kontact ${IUSE//+} && use kontact; then
370 KMEXTRA+="
371 kontact/plugins/${PLUGINNAME:-${PN}}/"
372 KMEXTRACTONLY+="
373 kontactinterfaces/"
374 fi
375 ;;
376 kdeutils)
377 case ${SLOT} in
378 4.3|4.4|live)
379 KMEXTRACTONLY+="
380 kdeutils-version.h"
381 ;;
382 esac
383 ;;
384 koffice)
385 KMEXTRACTONLY+="
386 config-endian.h.cmake
387 filters/config-filters.h.cmake
388 config-openexr.h.cmake
389 config-opengl.h.cmake
390 config-prefix.h.cmake
391 "
392 case ${PV} in
393 2.0.*)
394 KMEXTRACTONLY+="
395 config-openctl.h.cmake"
396 ;;
397 esac
398 ;;
399 esac
400 # Don't install cmake modules for split ebuilds, to avoid collisions.
401 case ${KMNAME} in
402 kdepim)
403 # No need for unpack since 4.2.86
404 # Remove when 4.2 is wiped out from the tree
405 case ${PV} in
406 4.1*|4.2.0|4.2.1|4.2.2|4.2.3|4.2.4|4.2.85)
407 KMCOMPILEONLY+="
408 cmake/modules/"
409 ;;
410 *) ;;
411 esac
412 ;;
413 kdebase-runtime|kdebase-workspace|kdeedu|kdegames|kdegraphics)
414 case ${PN} in
415 libkdegames|libkdeedu|libkworkspace)
416 KMEXTRA+="
417 cmake/modules/"
418 ;;
419 *)
420 KMCOMPILEONLY+="
421 cmake/modules/"
422 ;;
423 esac
424 ;;
425 esac
426
427 debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: KMEXTRACTONLY ${KMEXTRACTONLY}"
428 }
429
430 __list_needed_subdirectories() {
431 local i j kmextra kmextra_expanded kmmodule_expanded kmcompileonly_expanded extractlist
432
433 # We expand KMEXTRA by adding CMakeLists.txt files
434 kmextra="${KMEXTRA}"
435 [[ ${1} != fatal ]] && kmextra+=" ${KMEXTRA_NONFATAL}"
436 for i in ${kmextra}; do
437 kmextra_expanded+=" ${i}"
438 j=$(dirname ${i})
439 while [[ ${j} != "." ]]; do
440 kmextra_expanded+=" ${j}/CMakeLists.txt";
441 j=$(dirname ${j})
442 done
443 done
444
445 # Expand KMMODULE
446 if [[ -n ${KMMODULE} ]]; then
447 kmmodule_expanded="${KMMODULE}"
448 j=$(dirname ${KMMODULE})
449 while [[ ${j} != "." ]]; do
450 kmmodule_expanded+=" ${j}/CMakeLists.txt";
451 j=$(dirname ${j})
452 done
453 fi
454
455 # Expand KMCOMPILEONLY
456 for i in ${KMCOMPILEONLY}; do
457 kmcompileonly_expanded+=" ${i}"
458 j=$(dirname ${i})
459 while [[ ${j} != "." ]]; do
460 kmcompileonly_expanded+=" ${j}/CMakeLists.txt";
461 j=$(dirname ${j})
462 done
463 done
464
465 debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmextra_expanded: ${kmextra_expanded}"
466 debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmmodule_expanded: ${kmmodule_expanded}"
467 debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmcompileonly_expanded: ${kmcompileonly_expanded}"
468
469 # Create final list of stuff to extract
470 # We append topdir only when specified (usually for tarballs)
471 for i in ${kmmodule_expanded} ${kmextra_expanded} ${kmcompileonly_expanded} \
472 ${KMEXTRACTONLY}
473 do
474 extractlist+=" ${topdir}${moduleprefix}${i}"
475 done
476
477 echo ${extractlist}
478 }
479
480 # @FUNCTION: kde4-meta_src_prepare
481 # @DESCRIPTION:
482 # Meta-package build system configuration handling - commenting out targets, etc..
483 kde4-meta_src_prepare() {
484 debug-print-function ${FUNCNAME} "$@"
485
486 kde4-meta_change_cmakelists
487 kde4-base_src_prepare
488 }
489
490 # FIXME: no comment here?
491 _change_cmakelists_parent_dirs() {
492 debug-print-function ${FUNCNAME} "$@"
493
494 local _olddir _dir
495 _dir="${S}"/${1}
496 until [[ ${_dir} == "${S}" ]]; do
497 _olddir=$(basename "${_dir}")
498 _dir=$(dirname "${_dir}")
499 debug-print "${LINENO}: processing ${_dir} CMakeLists.txt searching for ${_olddir}"
500 if [[ -f ${_dir}/CMakeLists.txt ]]; then
501 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" \
502 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" \
503 -i ${_dir}/CMakeLists.txt || die "${LINENO}: died in ${FUNCNAME} while processing ${_dir}"
504 fi
505 done
506 }
507
508 # FIXME: add description
509 # @FUNCTION: kde4-meta_change_cmakelists
510 # @DESCRIPTION:
511 kde4-meta_change_cmakelists() {
512 debug-print-function ${FUNCNAME} "$@"
513
514 pushd "${S}" > /dev/null
515
516 comment_all_add_subdirectory ./
517
518 # Restore "add_subdirectory( cmake )" in ${S}/CMakeLists.txt
519 if [[ -f "${S}"/CMakeLists.txt ]]; then
520 sed -e '/add_subdirectory[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' \
521 -e '/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' \
522 -i "${S}"/CMakeLists.txt || die "${LINENO}: cmake sed died"
523 fi
524
525 if [[ -z ${KMNOMODULE} ]]; then
526 # Restore "add_subdirectory" in $KMMODULE subdirectories
527 find "${S}"/${KMMODULE} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
528 die "${LINENO}: died in KMMODULE section"
529 _change_cmakelists_parent_dirs ${KMMODULE}
530 fi
531
532 local i
533
534 # KMEXTRACTONLY section - Some ebuilds need to comment out some subdirs in KMMODULE and they use KMEXTRACTONLY
535 for i in ${KMEXTRACTONLY}; do
536 if [[ -d "${S}"/${i} && -f "${S}"/${i}/../CMakeLists.txt ]]; then
537 sed -i -e "/([[:space:]]*$(basename $i)[[:space:]]*)/s/^/#DONOTCOMPILE /" "${S}"/${i}/../CMakeLists.txt || \
538 die "${LINENO}: sed died while working in the KMEXTRACTONLY section while processing ${i}"
539 fi
540 done
541
542 # KMCOMPILEONLY
543 for i in ${KMCOMPILEONLY}; do
544 debug-print "${LINENO}: KMCOMPILEONLY, processing ${i}"
545 # Uncomment "add_subdirectory" instructions inside $KMCOMPILEONLY, then comment "install" instructions.
546 find "${S}"/${i} -name CMakeLists.txt -print0 | \
547 xargs -0 sed -i \
548 -e 's/^#DONOTCOMPILE //g' \
549 -e '/install(.*)/{s/^/#DONOTINSTALL /;}' \
550 -e '/^install(/,/)/{s/^/#DONOTINSTALL /;}' \
551 -e '/kde4_install_icons(.*)/{s/^/#DONOTINSTALL /;}' || \
552 die "${LINENO}: sed died in the KMCOMPILEONLY section while processing ${i}"
553 _change_cmakelists_parent_dirs ${i}
554 done
555
556 # KMEXTRA section
557 for i in ${KMEXTRA}; do
558 debug-print "${LINENO}: KMEXTRA section, processing ${i}"
559 find "${S}"/${i} -name CMakeLists.txt -print0 | \
560 xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
561 die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}"
562 _change_cmakelists_parent_dirs ${i}
563 done
564 # KMEXTRA_NONFATAL section
565 for i in ${KMEXTRA_NONFATAL}; do
566 if [[ -d "${S}"/${i} ]]; then
567 find "${S}"/${i} -name CMakeLists.txt -print0 | \
568 xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
569 die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}"
570 _change_cmakelists_parent_dirs ${i}
571 fi
572 done
573
574 case ${KMNAME} in
575 kdebase-workspace)
576 # COLLISION PROTECT section
577 # Install the startkde script just once, as a part of kde-base/kdebase-startkde,
578 # not as a part of every package.
579 if [[ ${PN} != kdebase-startkde && -f "${S}"/CMakeLists.txt ]]; then
580 # The startkde script moved to kdebase-workspace for KDE4 versions > 3.93.0.
581 sed -i -e '/startkde/s/^/#DONOTINSTALL /' "${S}"/CMakeLists.txt || \
582 die "${LINENO}: sed died in the kdebase-startkde collision prevention section"
583 fi
584 # Strip EXPORT feature section from workspace for KDE4 versions > 4.1.82
585 if [[ ${PN} != libkworkspace ]]; then
586 sed -i \
587 -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' \
588 CMakeLists.txt || die "${LINENO}: sed died in kdebase-workspace strip config install and fix EXPORT section"
589 fi
590 ;;
591 kdebase-runtime)
592 # COLLISION PROTECT section
593 # Only install the kde4 script as part of kde-base/kdebase-data
594 if [[ ${PN} != kdebase-data && -f "${S}"/CMakeLists.txt ]]; then
595 sed -i -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' \
596 "${S}"/CMakeLists.txt || die "Sed to exclude bin/kde4 failed"
597 fi
598 ;;
599 kdepim)
600 case ${PN} in
601 kaddressbook|kalarm|kmailcvt|kontact|korganizer|korn)
602 sed -i -n -e '/qt4_generate_dbus_interface(.*org\.kde\.kmail\.\(kmail\|mailcomposer\)\.xml/p' \
603 -e '/add_custom_target(kmail_xml /,/)/p' "${S}"/kmail/CMakeLists.txt || die "uncommenting xml failed"
604 _change_cmakelists_parent_dirs kmail
605 ;;
606 esac
607 ;;
608 kdewebdev)
609 # Disable hardcoded kdepimlibs check
610 sed -e 's/find_package(KdepimLibs REQUIRED)/macro_optional_find_package(KdepimLibs)/' \
611 -e 's/find_package(LibXml2 REQUIRED)/macro_optional_find_package(LibXml2)/' \
612 -e 's/find_package(LibXslt REQUIRED)/macro_optional_find_package(LibXslt)/' \
613 -e 's/find_package(Boost REQUIRED)/macro_optional_find_package(Boost)/' \
614 -i CMakeLists.txt || die "failed to disable hardcoded checks"
615 ;;
616 koffice)
617 # prevent collisions
618 if [[ ${PN} != koffice-data ]]; then
619 sed -i -e '/install(.*FindKOfficeLibs.cmake/,/)/ d' \
620 "${S}"/cmake/modules/CMakeLists.txt || \
621 die "${LINENO}: sed died in collision prevention section"
622 case ${PV} in
623 2.0.*)
624 sed -i -n -e '1h;1!H;${g;s/install(.\+config-openexr.h.\+)//;p}' \
625 "${S}"/CMakeLists.txt || \
626 die "${LINENO}: sed died in collision prevention section"
627 ;;
628 *)
629 sed -i -e '/install(.\+config-openexr\.h.\+)/d' \
630 "${S}"//CMakeLists.txt || \
631 die "${LINENO}: sed died in collision prevention section"
632 ;;
633 esac
634 fi
635 esac
636
637 popd > /dev/null
638 }
639
640 # @FUNCTION: kde4-meta_src_configure
641 # @DESCRIPTION:
642 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in split
643 # ebuilds.
644 kde4-meta_src_configure() {
645 debug-print-function ${FUNCNAME} "$@"
646
647 # Set some cmake default values here (usually workarounds for automagic deps)
648 case ${KMNAME} in
649 kdewebdev)
650 mycmakeargs="
651 -DWITH_KdepimLibs=OFF
652 -DWITH_LibXml2=OFF
653 -DWITH_LibXslt=OFF
654 -DWITH_Boost=OFF
655 -DWITH_LibTidy=OFF
656 ${mycmakeargs}"
657 ;;
658 esac
659
660 kde4-base_src_configure
661 }
662
663 # @FUNCTION: kde4-meta_src_compile
664 # @DESCRIPTION:
665 # General function for compiling split KDE4 applications.
666 # Overrides kde4-base_src_compile.
667 kde4-meta_src_compile() {
668 debug-print-function ${FUNCNAME} "$@"
669
670 kde4-base_src_compile "$@"
671 }
672
673 # @FUNCTION: kde4-meta_src_test
674 # @DESCRIPTION:
675 # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
676 # ebuilds.
677 kde4-meta_src_test() {
678 debug-print-function $FUNCNAME "$@"
679
680 kde4-base_src_test
681 }
682
683 # @FUNCTION: kde4-meta_src_install
684 # @DESCRIPTION:
685 # Function for installing KDE4 split applications.
686 kde4-meta_src_install() {
687 debug-print-function $FUNCNAME "$@"
688
689 kde4-base_src_install
690 }
691
692 # @FUNCTION: kde4-meta_src_make_doc
693 # @DESCRIPTION:
694 # This function searches in ${S}/${KMMODULE},
695 # and tries to install "AUTHORS ChangeLog* README* NEWS TODO" if these files exist.
696 kde4-meta_src_make_doc() {
697 debug-print-function ${FUNCNAME} "$@"
698
699 local doc
700 for doc in AUTHORS ChangeLog* README* NEWS TODO; do
701 [[ -s ${KMMODULE}/${doc} ]] && newdoc "${KMMODULE}/${doc}" "${doc}.${KMMODULE##*/}"
702 done
703
704 kde4-base_src_make_doc
705 }
706
707 # @FUNCTION: kde4-meta_pkg_postinst
708 # @DESCRIPTION:
709 # Display information about application handbook and invoke kbuildsycoca4.
710 kde4-meta_pkg_postinst() {
711 debug-print-function ${FUNCNAME} "$@"
712
713 if has handbook ${IUSE//+} && ! use handbook; then
714 echo
715 einfo "Application handbook for ${PN} has not been installed."
716 einfo "To install handbook, reemerge =${CATEGORY}/${PF} with 'handbook' USE flag."
717 echo
718 fi
719
720 kde4-base_pkg_postinst
721 }
722
723 # @FUNCTION: kde4-meta_pkg_postrm
724 # @DESCRIPTION:
725 # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
726 # ebuilds.
727 kde4-meta_pkg_postrm() {
728 debug-print-function ${FUNCNAME} "$@"
729
730 kde4-base_pkg_postrm
731 }

  ViewVC Help
Powered by ViewVC 1.1.20