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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (hide annotations) (download)
Sun Mar 1 11:44:09 2009 UTC (5 years, 7 months ago) by scarabeus
Branch: MAIN
Changes since 1.10: +88 -93 lines
Update kde4 eclasses. Was in testing for month now so hope all problems squashed. Resolves some annoying issues and enhance deps.

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

  ViewVC Help
Powered by ViewVC 1.1.20