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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.10 - (hide annotations) (download)
Mon Jan 12 19:40:34 2009 UTC (5 years, 8 months ago) by scarabeus
Branch: MAIN
Changes since 1.9: +7 -2 lines
Add one missed patch for the eclasses. Affect only live stuff so no breakage for tree users. Thanks reavertm for pointing out.

1 ingmar 1.1 # Copyright 1999-2008 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 scarabeus 1.10 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-meta.eclass,v 1.9 2009/01/12 17:25:59 scarabeus Exp $
4 ingmar 1.1 #
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 scarabeus 1.9 # we want opengl optional in each koffice package
16     if [[ $KMNAME = koffice ]]; then
17     case ${PN} in
18     koffice-data)
19     ;;
20     *)
21     OPENGL_REQUIRED=optional
22     ;;
23     esac
24     fi
25    
26     inherit kde4-base versionator
27 ingmar 1.1
28 scarabeus 1.9 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_postinst pkg_postrm
29 ingmar 1.1
30     if [[ -z ${KMNAME} ]]; then
31     die "kde4-meta.eclass inherited but KMNAME not defined - broken ebuild"
32     fi
33    
34     case ${KDEBASE} in
35 scarabeus 1.9 kde-base)
36     HOMEPAGE="http://www.kde.org/"
37     LICENSE="GPL-2"
38     ;;
39     koffice)
40     HOMEPAGE="http://www.koffice.org/"
41     LICENSE="GPL-2"
42     ;;
43 ingmar 1.1 esac
44    
45     # Add dependencies that all packages in a certain module share.
46     case ${KMNAME} in
47     kdebase|kdebase-workspace|kdebase-runtime)
48     DEPEND="${DEPEND} >=kde-base/qimageblitz-0.0.4"
49     RDEPEND="${RDEPEND} >=kde-base/qimageblitz-0.0.4"
50 scarabeus 1.9 ;;
51 ingmar 1.1 kdepim)
52 jmbsvicetto 1.7 DEPEND="${DEPEND} dev-libs/boost app-office/akonadi-server"
53 ingmar 1.6 RDEPEND="${RDEPEND} dev-libs/boost"
54 scarabeus 1.9 if [[ $PN != kode ]]; then
55 ingmar 1.1 DEPEND="${DEPEND} >=kde-base/kode-${PV}:${SLOT}"
56     RDEPEND="${RDEPEND} >=kde-base/kode-${PV}:${SLOT}"
57     fi
58     case ${PN} in
59 jmbsvicetto 1.7 akregator|kaddressbook|kjots|kmail|kmobiletools|knode|knotes|korganizer|ktimetracker)
60 ingmar 1.1 IUSE="+kontact"
61 jmbsvicetto 1.7 DEPEND="${DEPEND} kontact? ( >=kde-base/kontactinterfaces-${PV}:${SLOT} )"
62     RDEPEND="${RDEPEND} kontact? ( >=kde-base/kontactinterfaces-${PV}:${SLOT} )"
63 scarabeus 1.9 ;;
64 ingmar 1.1 esac
65 scarabeus 1.9 ;;
66 ingmar 1.1 kdegames)
67 scarabeus 1.9 if [[ $PN != libkdegames ]]; then
68 ingmar 1.1 DEPEND="${DEPEND} >=kde-base/libkdegames-${PV}:${SLOT}"
69     RDEPEND="${RDEPEND} >=kde-base/libkdegames-${PV}:${SLOT}"
70     fi
71 scarabeus 1.9 ;;
72 ingmar 1.1 koffice)
73 scarabeus 1.9 case ${PV} in
74     9999*) DEPEND="${DEPEND} !app-office/${PN}:2" ;;
75     1.9*|2*) DEPEND="${DEPEND} !app-office/${PN}:live" ;;
76     esac
77     DEPEND="${DEPEND}
78     !app-office/${PN}:0
79     !app-office/koffice:0
80     !app-office/koffice-meta:0"
81 ingmar 1.1 case ${PN} in
82 scarabeus 1.9 koffice-data)
83     DEPEND="${DEPEND} media-libs/lcms"
84     RDEPEND="${RDEPEND} media-libs/lcms"
85     ;;
86 ingmar 1.1 *)
87 scarabeus 1.9 IUSE="+crypt"
88     DEPEND="${DEPEND} crypt? ( >=app-crypt/qca-2 )"
89     RDEPEND="${RDEPEND} crypt? ( >=app-crypt/qca-2 )"
90     if [[ $PN != koffice-libs ]]; then
91     DEPEND="${DEPEND} >=app-office/koffice-libs-${PV}:${SLOT}"
92     RDEPEND="${RDEPEND} >=app-office/koffice-libs-${PV}:${SLOT}"
93     fi
94     ;;
95 ingmar 1.1 esac
96 scarabeus 1.9 ;;
97 ingmar 1.1 esac
98    
99     debug-print "line ${LINENO} ${ECLASS}: DEPEND ${DEPEND} - after metapackage-specific dependencies"
100     debug-print "line ${LINENO} ${ECLASS}: RDEPEND ${RDEPEND} - after metapackage-specific dependencies"
101    
102     # @ECLASS-VARIABLE: KMNAME
103     # @DESCRIPTION:
104 scarabeus 1.9 # Name of the parent-module (e.g. kdebase, kdepim, ...). You _must_ set it
105     # _before_ inheriting this eclass, (unlike the other parameters), since it's
106     # used to set $SRC_URI.
107 ingmar 1.1
108     # @ECLASS-VARIABLE: KMMODULE
109     # @DESCRIPTION:
110     # Specify exactly one subdirectory of $KMNAME here. Defaults to $PN.
111     # The subdirectory listed here is treated exactly like items in $KMEXTRA.
112     #
113     # Example: The ebuild name of "kdebase/l10n" is kde-base/kdebase-l10n, because
114     # just 'l10n' would be too confusing. Hence it sets KMMODULE="l10n".
115    
116     # @ECLASS-VARIABLE: KMNOMODULE
117     # @DESCRIPTION:
118     # If set to "true", $KMMODULE doesn't have to be defined.
119     #
120     # Example usage: If you're installing subdirectories of a package, like plugins,
121 scarabeus 1.9 # you mark the top subdirectory (containing the package) as $KMEXTRACTONLY, and
122     # set KMNOMODULE="true".
123     if [[ -z $KMMODULE && $KMNOMODULE != true ]]; then
124     KMMODULE=$PN
125 ingmar 1.1 fi
126    
127     # @ECLASS-VARIABLE: KMEXTRA
128     # @DESCRIPTION:
129     # All subdirectories listed here will be extracted, compiled & installed.
130     # $KMMODULE is always added to $KMEXTRA.
131     # If the htmlhandbook USE-flag is set, and if this directory exists,
132     # then "doc/$KMMODULE" is added to $KMEXTRA. In other cases, this should be
133     # handled in the ebuild.
134     # If the documentation is in a different subdirectory, you should add it to KMEXTRA.
135    
136     # @ECLASS-VARIABLE: KMCOMPILEONLY
137     # @DESCRIPTION:
138     # All subdirectories listed here will be extracted & compiled, but not installed.
139    
140 scarabeus 1.9 # TODO: better formulation may be needed
141 ingmar 1.1 # @ECLASS-VARIABLE: KMEXTRACTONLY
142     # @DESCRIPTION:
143 scarabeus 1.9 # All subdirectories listed here will be extracted, but neither compiled nor installed.
144 ingmar 1.1 # This can be used to avoid compilation in a subdirectory of a directory in $KMMODULE or $KMEXTRA
145    
146     # @ECLASS-VARIABLE: KMTARPARAMS
147     # @DESCRIPTION:
148     # Specify extra parameters to pass to tar, in kde4-meta_src_extract.
149     # '-xpf -j' are passed to tar by default.
150    
151     # @FUNCTION: kde4-meta_pkg_setup
152     # @DESCRIPTION:
153 scarabeus 1.9 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in
154     # split ebuilds.
155 ingmar 1.1 kde4-meta_pkg_setup() {
156     kde4-base_pkg_setup
157     }
158    
159     # @FUNCTION: kde4-meta_src_unpack
160     # @DESCRIPTION:
161     # This function unpacks the source for split ebuilds. See also
162     # kde4-meta-src_extract.
163     kde4-meta_src_unpack() {
164     debug-print-function ${FUNCNAME} "$@"
165 scarabeus 1.9 if [[ $BUILD_TYPE = live ]]; then
166 scarabeus 1.10 migrate_store_dir
167     S="${WORKDIR}/${PN}-${PV}"
168     mkdir -p "${S}"
169     ESVN_RESTRICT="export" subversion_src_unpack
170     subversion_wc_info
171     subversion_bootstrap
172 scarabeus 1.9 kde4-meta_src_extract
173     else
174     kde4-meta_src_extract
175     fi
176     }
177 ingmar 1.1
178 scarabeus 1.9 # FIXME: the difference between kde4-meta_src_extract and kde4-meta_src_unpack?
179 ingmar 1.1
180     # @FUNCTION: kde4-meta_src_extract
181     # @DESCRIPTION:
182     # A function to unpack the source for a split KDE ebuild.
183 scarabeus 1.9 # Also see KMMODULE, KMNOMODULE, KMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY and
184     # KMTARPARAMS.
185 ingmar 1.1 kde4-meta_src_extract() {
186 scarabeus 1.9 if [[ $BUILD_TYPE = live ]]; then
187     local rsync_options subdir kmnamedir targetdir
188     # Export working copy to ${S}
189     einfo "Exporting parts of working copy to ${S}"
190     kde4-meta_create_extractlists
191    
192     rsync_options="--group --links --owner --perms --quiet --exclude=.svn/"
193    
194     # Copy ${KMNAME} non-recursively (toplevel files)
195     rsync ${rsync_options} "${ESVN_WC_PATH}"/${kmnamedir}* "${S}" \
196     || die "${ESVN}: can't export toplevel files to '${S}'."
197     # Copy cmake directory
198     if [[ -d "${ESVN_WC_PATH}/${kmnamedir}cmake" ]]; then
199     rsync --recursive ${rsync_options} "${ESVN_WC_PATH}/${kmnamedir}cmake" "${S}" \
200     || die "${ESVN}: can't export cmake files to '${S}'."
201     fi
202     # Copy all subdirectories
203     for subdir in $(__list_needed_subdirectories); do
204     targetdir=""
205     if [[ $subdir = doc/* && ! -e "$ESVN_WC_PATH/$kmnamedir$subdir" ]]; then
206     continue
207     fi
208    
209     [[ ${subdir%/} = */* ]] && targetdir=${subdir%/} && targetdir=${targetdir%/*} && mkdir -p "${S}/${targetdir}"
210     rsync --recursive ${rsync_options} "${ESVN_WC_PATH}/${kmnamedir}${subdir%/}" "${S}/${targetdir}" \
211     || die "${ESVN}: can't export subdirectory '${subdir}' to '${S}/${targetdir}'."
212     done
213 ingmar 1.1
214 scarabeus 1.9 if [[ $KMNAME = kdebase-runtime && $PN != kdebase-data ]]; then
215     sed -i -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' \
216     "${S}"/CMakeLists.txt || die "Sed to exclude bin/kde4 failed"
217     fi
218     else
219     local abort tarball tarfile f extractlist
220     case $KMNAME in
221     kdebase-apps)
222     tarball="${KMNAME#-apps}-${PV}.tar.bz2"
223     ;;
224     *)
225     tarball="${KMNAME}-${PV}.tar.bz2"
226     ;;
227     esac
228     tarfile="${DISTDIR}"/${tarball}
229 ingmar 1.1
230 scarabeus 1.9 ebegin "Unpacking parts of ${tarball} to ${WORKDIR}"
231 ingmar 1.1
232 scarabeus 1.9 kde4-meta_create_extractlists
233 ingmar 1.1
234 scarabeus 1.9 for f in cmake/ CMakeLists.txt ConfigureChecks.cmake config.h.cmake \
235     AUTHORS COPYING INSTALL README NEWS ChangeLog
236     do
237     extractlist="${extractlist} ${KMNAME}-${PV}/${f}"
238     done
239     extractlist="${extractlist} $(__list_needed_subdirectories)"
240     KMTARPARAMS="${KMTARPARAMS} -j"
241 ingmar 1.1
242 scarabeus 1.9 pushd "${WORKDIR}" > /dev/null
243     [[ -n ${KDE4_STRICTER} ]] && echo tar -xpf $tarfile $KMTARPARAMS $extractlist >&2
244     tar -xpf $tarfile $KMTARPARAMS $extractlist 2> /dev/null
245    
246     # Default $S is based on $P; rename the extracted directory to match $S
247     mv ${KMNAME}-${PV} ${P} || die "Died while moving \"${KMNAME}-${PV}\" to \"${P}\""
248    
249     popd > /dev/null
250    
251     eend $?
252    
253     if [[ -n ${KDE4_STRICTER} ]]; then
254     for f in $(__list_needed_subdirectories fatal); do
255     if [[ ! -e ${S}/${f#*/} ]]; then
256     eerror "'${f#*/}' is missing"
257     abort=true
258     fi
259     done
260     [[ -n ${abort} ]] && die "There were missing files."
261     fi
262     kde4-base_src_unpack
263     fi
264     # fix koffice linking
265     if [[ $KMNAME = koffice ]]; then
266     koffice_fix_libraries
267 zlin 1.4 fi
268 ingmar 1.1 }
269    
270 scarabeus 1.9 # @FUNCTION: kde4-meta_create_extractlists
271     # @DESCRIPTION:
272 ingmar 1.1 # Create lists of files and subdirectories to extract.
273 scarabeus 1.9 # Also see descriptions of KMMODULE, KMNOMODULE, KMEXTRA, KMCOMPILEONLY,
274     # KMEXTRACTONLY and KMTARPARAMS.
275 ingmar 1.1 kde4-meta_create_extractlists() {
276     debug-print-function ${FUNCNAME} "$@"
277    
278     if has htmlhandbook ${IUSE//+} && use htmlhandbook; then
279     # We use the basename of $KMMODULE because $KMMODULE can contain
280     # the path to the module subdirectory.
281 zlin 1.4 KMEXTRA_NONFATAL="${KMEXTRA_NONFATAL} doc/${KMMODULE##*/}"
282 ingmar 1.1 fi
283    
284     # Add some CMake-files to KMEXTRACTONLY.
285     # Note that this actually doesn't include KMEXTRA handling.
286     # In those cases you should care to add the relevant files to KMEXTRACTONLY
287     case ${KMNAME} in
288     kdebase)
289 scarabeus 1.9 KMEXTRACTONLY="${KMEXTRACTONLY}
290     apps/config-apps.h.cmake
291     apps/ConfigureChecks.cmake"
292     ;;
293     kdebase-apps)
294     KMEXTRACTONLY="${KMEXTRACTONLY}
295     config-apps.h.cmake
296     ConfigureChecks.cmake"
297     ;;
298 ingmar 1.1 kdebase-runtime)
299 scarabeus 1.9 KMEXTRACTONLY="${KMEXTRACTONLY}
300     config-runtime.h.cmake"
301     ;;
302 ingmar 1.1 kdebase-workspace)
303 scarabeus 1.9 KMEXTRACTONLY="${KMEXTRACTONLY}
304     config-unix.h.cmake
305     ConfigureChecks.cmake
306     config-workspace.h.cmake
307     config-X11.h.cmake
308     startkde.cmake"
309     case ${SLOT} in
310     4.2)
311     KMEXTRACTONLY="${KMEXTRACTONLY}
312     KDE4WorkspaceConfig.cmake.in"
313     ;;
314     *) : ;;
315     esac
316     ;;
317 ingmar 1.1 kdegames)
318 scarabeus 1.9 if [[ ${PN} != "libkdegames" ]]; then
319     KMEXTRACTONLY="${KMEXTRACTONLY}
320     libkdegames"
321     fi
322     ;;
323     kdepim)
324 ingmar 1.1 KMEXTRACTONLY="${KMEXTRACTONLY}
325 scarabeus 1.9 kleopatra/ConfigureChecks.cmake
326     libkdepim/kdepim_export.h"
327     if has kontact ${IUSE//+} && use kontact; then
328     KMEXTRA="${KMEXTRA} kontact/plugins/${PLUGINNAME:-${PN}}"
329     KMEXTRACTONLY="${KMEXTRACTONLY} kontactinterfaces/"
330     fi
331     ;;
332 ingmar 1.1 koffice)
333     KMEXTRACTONLY="${KMEXTRACTONLY}
334     config-endian.h.cmake
335     filters/config-filters.h.cmake
336 scarabeus 1.9 config-openctl.h.cmake
337 ingmar 1.1 config-openexr.h.cmake
338     config-opengl.h.cmake
339     config-prefix.h.cmake"
340 scarabeus 1.9 case ${PN} in
341     koffice-libs|koffice-data)
342     ;;
343     *)
344     # add basic extract for all packages
345     KMEXTRACTONLY="${KMEXTRACTONLY}
346     filters/
347     libs/
348     plugins/"
349     if [[ ${PN} != "kplato" ]]; then
350     KMEXTRA="${KMEXTRA} filters/${PN}"
351     fi
352     ;;
353     esac
354     ;;
355 ingmar 1.1 esac
356 scarabeus 1.9 # Don't install cmake modules for split ebuilds, to avoid collisions.
357 ingmar 1.1 case ${KMNAME} in
358 jmbsvicetto 1.7 kdebase-runtime|kdebase-workspace|kdeedu|kdegames|kdegraphics|kdepim)
359     case ${PN} in
360 scarabeus 1.9 libkdegames|libkdeedu|marble|libkworkspace)
361 jmbsvicetto 1.7 KMEXTRA="${KMEXTRA}
362     cmake/modules/"
363     ;;
364     *)
365     KMCOMPILEONLY="${KMCOMPILEONLY}
366     cmake/modules/"
367     ;;
368     esac
369 ingmar 1.1 ;;
370     esac
371    
372     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: KMEXTRACTONLY ${KMEXTRACTONLY}"
373     }
374    
375     __list_needed_subdirectories() {
376 zlin 1.4 local i j kmextra kmextra_expanded kmmodule_expanded kmcompileonly_expanded extractlist topdir
377 ingmar 1.1
378     # We expand KMEXTRA by adding CMakeLists.txt files
379 zlin 1.4 kmextra="${KMEXTRA}"
380     [[ ${1} != fatal ]] && kmextra="${kmextra} ${KMEXTRA_NONFATAL}"
381     for i in ${kmextra}; do
382 ingmar 1.1 kmextra_expanded="${kmextra_expanded} ${i}"
383     j=$(dirname ${i})
384     while [[ ${j} != "." ]]; do
385     kmextra_expanded="${kmextra_expanded} ${j}/CMakeLists.txt";
386     j=$(dirname ${j})
387     done
388     done
389    
390     # Expand KMMODULE
391 scarabeus 1.9 if [[ -n $KMMODULE ]]; then
392 ingmar 1.1 kmmodule_expanded="${KMMODULE}"
393     j=$(dirname ${KMMODULE})
394     while [[ ${j} != "." ]]; do
395     kmmodule_expanded="${kmmodule_expanded} $j/CMakeLists.txt";
396     j=$(dirname $j)
397     done
398     fi
399    
400     # Expand KMCOMPILEONLY
401     for i in ${KMCOMPILEONLY}; do
402     kmcompileonly_expanded="${kmcompileonly_expanded} ${i}"
403     j=$(dirname ${i})
404     while [[ ${j} != "." ]]; do
405     kmcompileonly_expanded="${kmcompileonly_expanded} ${j}/CMakeLists.txt";
406     j=$(dirname ${j})
407     done
408     done
409    
410     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmextra_expanded: ${kmextra_expanded}"
411     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmmodule_expanded: ${kmmodule_expanded}"
412     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmcompileonly_expanded: ${kmcompileonly_expanded}"
413    
414    
415 ingmar 1.6 case ${PV} in
416 jmbsvicetto 1.7 scm|9999*) : ;;
417 ingmar 1.1 *) topdir="${KMNAME}-${PV}/" ;;
418     esac
419    
420     # Create final list of stuff to extract
421     for i in ${kmmodule_expanded} ${kmextra_expanded} ${kmcompileonly_expanded} \
422     ${KMEXTRACTONLY}
423     do
424     extractlist="${extractlist} ${topdir}${i}"
425     done
426    
427     echo ${extractlist}
428     }
429    
430 scarabeus 1.9 # @FUNCTION: kde4-meta_src_prepare
431 ingmar 1.1 # @DESCRIPTION:
432 scarabeus 1.9 # Meta-package build system configuration handling - commenting out targets, etc..
433     kde4-meta_src_prepare() {
434 ingmar 1.1 debug-print-function ${FUNCNAME} "$@"
435    
436 scarabeus 1.9 kde4-meta_change_cmakelists
437     kde4-base_src_prepare
438 ingmar 1.1 }
439    
440 scarabeus 1.9
441     # FIXME: no comment here?
442 ingmar 1.1 _change_cmakelists_parent_dirs() {
443     debug-print-function ${FUNCNAME} "$@"
444    
445     local _olddir _dir
446     _dir="${S}"/${1}
447     until [[ ${_dir} == "${S}" ]]; do
448 ingmar 1.6 _olddir=$(basename "${_dir}")
449     _dir=$(dirname "${_dir}")
450 ingmar 1.1 debug-print "${LINENO}: processing ${_dir} CMakeLists.txt searching for ${_olddir}"
451     if [[ -f ${_dir}/CMakeLists.txt ]]; then
452 ingmar 1.6 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" \
453     -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" \
454     -i ${_dir}/CMakeLists.txt || die "${LINENO}: died in ${FUNCNAME} while processing ${_dir}"
455 ingmar 1.1 fi
456     done
457     }
458    
459 scarabeus 1.9 # FIXME: add description
460     # @FUNCTION: kde4-meta_change_cmakelists
461     # @DESCRIPTION:
462 ingmar 1.1 kde4-meta_change_cmakelists() {
463     debug-print-function ${FUNCNAME} "$@"
464    
465     pushd "${S}" > /dev/null
466    
467     comment_all_add_subdirectory ./
468    
469     # Restore "add_subdirectory( cmake )" in ${S}/CMakeLists.txt
470     if [[ -f "${S}"/CMakeLists.txt ]]; then
471 ingmar 1.6 sed -e '/add_subdirectory[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' \
472     -e '/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' \
473     -i "${S}"/CMakeLists.txt || die "${LINENO}: cmake sed died"
474 ingmar 1.1 fi
475    
476     if [[ -z ${KMNOMODULE} ]]; then
477     # Restore "add_subdirectory" in $KMMODULE subdirectories
478     find "${S}"/${KMMODULE} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
479     die "${LINENO}: died in KMMODULE section"
480     _change_cmakelists_parent_dirs ${KMMODULE}
481     fi
482    
483     # KMCOMPILEONLY
484     local i
485     for i in ${KMCOMPILEONLY}; do
486     debug-print "${LINENO}: KMCOMPILEONLY, processing ${i}"
487     # Uncomment "add_subdirectory" instructions inside $KMCOMPILEONLY, then comment "install" instructions.
488     find "${S}"/${i} -name CMakeLists.txt -print0 | \
489     xargs -0 sed -i \
490     -e 's/^#DONOTCOMPILE //g' \
491     -e '/install(.*)/{s/^/#DONOTINSTALL /;}' \
492     -e '/^install(/,/)/{s/^/#DONOTINSTALL /;}' \
493     -e '/kde4_install_icons(.*)/{s/^/#DONOTINSTALL /;}' || \
494     die "${LINENO}: sed died in the KMCOMPILEONLY section while processing ${i}"
495     _change_cmakelists_parent_dirs ${i}
496     done
497    
498     # KMEXTRA section
499     for i in ${KMEXTRA}; do
500     debug-print "${LINENO}: KMEXTRA section, processing ${i}"
501 zlin 1.4 find "${S}"/${i} -name CMakeLists.txt -print0 | \
502     xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
503     die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}"
504     _change_cmakelists_parent_dirs ${i}
505     done
506     # KMEXTRA_NONFATAL section
507     for i in ${KMEXTRA_NONFATAL}; do
508 ingmar 1.1 if [[ -d "${S}"/${i} ]]; then
509     find "${S}"/${i} -name CMakeLists.txt -print0 | \
510     xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
511     die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}"
512     _change_cmakelists_parent_dirs ${i}
513     fi
514     done
515    
516     # KMEXTRACTONLY section - Some ebuilds need to comment out some subdirs in KMMODULE and they use KMEXTRACTONLY
517     for i in ${KMEXTRACTONLY}; do
518     if [[ -d "${S}"/${i} && -f "${S}"/${i}/../CMakeLists.txt ]]; then
519 ingmar 1.6 sed -i -e "/([[:space:]]*$(basename $i)[[:space:]]*)/s/^/#DONOTCOMPILE /" "${S}"/${i}/../CMakeLists.txt || \
520 ingmar 1.1 die "${LINENO}: sed died while working in the KMEXTRACTONLY section while processing ${i}"
521     fi
522     done
523    
524     case ${KMNAME} in
525     kdebase-workspace)
526 scarabeus 1.9 # COLLISION PROTECT section
527     # Install the startkde script just once, as a part of kde-base/kdebase-startkde,
528     # not as a part of every package.
529     if [[ ${PN} != "kdebase-startkde" && -f "${S}"/CMakeLists.txt ]]; then
530     # The startkde script moved to kdebase-workspace for KDE4 versions > 3.93.0.
531 ingmar 1.1 sed -i -e '/startkde/s/^/#DONOTINSTALL /' "${S}"/CMakeLists.txt || \
532     die "${LINENO}: sed died in the kdebase-startkde collision prevention section"
533 scarabeus 1.9 fi
534     # Strip EXPORT feature section from workspace for KDE4 versions > 4.1.82
535     if [[ ${SLOT} == 4.2 ]] || [[ ${PV} == 9999 ]]; then
536     if [[ ${PN} != libkworkspace ]]; then
537     sed -i -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' \
538     CMakeLists.txt || die "${LINENO}: sed died in kdebase-workspace strip EXPORT section"
539     fi
540     fi
541     ;;
542     kdebase-runtime)
543     # COLLISION PROTECT section
544     # Only install the kde4 script as part of kde-base/kdebase-data
545     if [[ ${PN} != "kdebase-data" && -f "${S}"/CMakeLists.txt ]]; then
546     sed -i -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' \
547     "${S}"/CMakeLists.txt || die "Sed to exclude bin/kde4 failed"
548     fi
549     ;;
550     kdepim)
551     case ${PN} in
552     kaddressbook|kalarm|kmailcvt|kontact|korganizer|korn)
553     sed -i -n -e '/qt4_generate_dbus_interface(.*org\.kde\.kmail\.\(kmail\|mailcomposer\)\.xml/p' \
554     -e '/add_custom_target(kmail_xml /,/)/p' "${S}"/kmail/CMakeLists.txt || die "uncommenting xml failed"
555     _change_cmakelists_parent_dirs kmail
556 ingmar 1.1 ;;
557     esac
558 ingmar 1.6 ;;
559 ingmar 1.1 esac
560    
561     popd > /dev/null
562     }
563    
564     # @FUNCTION: kde4-meta_src_configure
565     # @DESCRIPTION:
566 scarabeus 1.9 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in split
567 ingmar 1.1 # ebuilds.
568     kde4-meta_src_configure() {
569     debug-print-function ${FUNCNAME} "$@"
570    
571     kde4-base_src_configure
572     }
573    
574 scarabeus 1.9 # @FUNCTION: kde4-meta_src_compile
575 ingmar 1.1 # @DESCRIPTION:
576 scarabeus 1.9 # General function for compiling split KDE4 applications.
577     # Overrides kde4-base_src_compile.
578     kde4-meta_src_compile() {
579 ingmar 1.1 debug-print-function ${FUNCNAME} "$@"
580    
581     kde4-base_src_make
582     }
583    
584     # @FUNCTION: kde4-meta_src_test
585     # @DESCRIPTION:
586     # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
587     # ebuilds.
588     kde4-meta_src_test() {
589     debug-print-function $FUNCNAME "$@"
590    
591     kde4-base_src_test
592     }
593    
594     # @FUNCTION: kde4-meta_src_install
595     # @DESCRIPTION:
596     # Function for installing KDE4 split applications.
597     kde4-meta_src_install() {
598     debug-print-function $FUNCNAME "$@"
599    
600     kde4-meta_src_make_doc
601     cmake-utils_src_install
602 ingmar 1.6
603 scarabeus 1.9 if [[ -n ${KMSAVELIBS} ]]; then
604 ingmar 1.6 install_library_dependencies
605     fi
606 scarabeus 1.9
607     # remove unvanted koffice stuff
608     if [[ $KMNAME = koffice && $PN != koffice-data ]]; then
609     rm "$D/$KDEDIR/include/config-openexr.h"
610     rm "$D/$KDEDIR/share/apps/cmake/modules/FindKOfficeLibs.cmake"
611     fi
612 ingmar 1.1 }
613    
614     # @FUNCTION: kde4-meta_src_make_doc
615     # @DESCRIPTION:
616 scarabeus 1.9 # This function searches in ${S}/${KMMODULE},
617 ingmar 1.1 # and tries to install "AUTHORS ChangeLog* README* NEWS todo" if these files exist.
618     kde4-meta_src_make_doc() {
619     debug-print-function $FUNCNAME "$@"
620    
621     local doc
622     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
623     [[ -s ${KMMODULE}/$doc ]] && newdoc "${KMMODULE}/${doc}" "${doc}.${KMMODULE##*/}"
624     done
625    
626     kde4-base_src_make_doc
627     }
628    
629     # @FUNCTION: kde4-meta_pkg_postinst
630     # @DESCRIPTION:
631     # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
632     # ebuilds.
633     kde4-meta_pkg_postinst() {
634     kde4-base_pkg_postinst
635     }
636    
637     # @FUNCTION: kde4-meta_pkg_postrm
638     # @DESCRIPTION:
639     # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
640     # ebuilds.
641     kde4-meta_pkg_postrm() {
642     kde4-base_pkg_postrm
643     }

  ViewVC Help
Powered by ViewVC 1.1.20