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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.22 - (show annotations) (download)
Thu Jun 4 09:29:54 2009 UTC (5 years, 1 month ago) by scarabeus
Branch: MAIN
Changes since 1.21: +23 -11 lines
Adjust eclasses to support new handbook useflag, also keep backcompat with old doc handling (will be dropped). Depend on qt4.5 and add variable allowing to override this. Linugas handling update.

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

  ViewVC Help
Powered by ViewVC 1.1.20