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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.22 - (hide 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 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.19 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-meta.eclass,v 1.18 2009/05/09 13:23:15 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 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 scarabeus 1.22 # 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 scarabeus 1.17 RDEPEND="${RDEPEND}
42 scarabeus 1.22 handbook? ( >=kde-base/khelpcenter-${PV}:${SLOT}[kdeprefix=] )
43 scarabeus 1.17 "
44     fi
45 scarabeus 1.22 fi
46 ingmar 1.1 # Add dependencies that all packages in a certain module share.
47     case ${KMNAME} in
48 scarabeus 1.22 kdebase|kdebase-apps|kdebase-workspace|kdebase-runtime|kdegraphics)
49 scarabeus 1.12 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 scarabeus 1.9 ;;
64 ingmar 1.1 kdepim)
65 scarabeus 1.12 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 ingmar 1.1 case ${PN} in
74 scarabeus 1.22 akregator|kaddressbook|kjots|kmail|knode|knotes|korganizer|ktimetracker)
75 ingmar 1.1 IUSE="+kontact"
76 scarabeus 1.12 RDEPEND="${RDEPEND}
77     kontact? ( >=kde-base/kontactinterfaces-${PV}:${SLOT}[kdeprefix=] )
78     "
79 scarabeus 1.9 ;;
80 ingmar 1.1 esac
81 scarabeus 1.9 ;;
82 ingmar 1.1 kdegames)
83 scarabeus 1.11 if [[ ${PN} != libkdegames ]]; then
84 scarabeus 1.12 DEPEND="${DEPEND}
85     >=kde-base/libkdegames-${PV}:${SLOT}[kdeprefix=]
86     "
87     RDEPEND="${RDEPEND}
88     >=kde-base/libkdegames-${PV}:${SLOT}[kdeprefix=]
89     "
90 ingmar 1.1 fi
91 scarabeus 1.9 ;;
92 ingmar 1.1 koffice)
93 scarabeus 1.11 [[ ${PN} != koffice-data ]] && IUSE="debug"
94 scarabeus 1.17 RDEPEND="${RDEPEND}
95 scarabeus 1.19 !app-office/${PN}:0
96     !app-office/koffice:0
97     !app-office/koffice-meta:0
98 scarabeus 1.17 "
99 dagger 1.21 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 scarabeus 1.17 dev-cpp/eigen:2
107     media-libs/fontconfig
108     media-libs/freetype:2
109 scarabeus 1.12 "
110 scarabeus 1.17 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 scarabeus 1.9 ;;
122 ingmar 1.1 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 scarabeus 1.11 # Useful to build kde4-meta style stuff from extragear/playground (plasmoids etc)
128 scarabeus 1.15 case ${BUILD_TYPE} in
129 scarabeus 1.11 live)
130     case ${KMNAME} in
131     extragear*|playground*)
132     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
133 scarabeus 1.18 ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
134 scarabeus 1.11 ;;
135     esac
136     ;;
137     esac
138    
139 ingmar 1.1 # @ECLASS-VARIABLE: KMNAME
140     # @DESCRIPTION:
141 scarabeus 1.9 # 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 ingmar 1.1
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 scarabeus 1.9 # you mark the top subdirectory (containing the package) as $KMEXTRACTONLY, and
159     # set KMNOMODULE="true".
160 scarabeus 1.11 if [[ -z ${KMMODULE} && ${KMNOMODULE} != true ]]; then
161     KMMODULE=${PN}
162 ingmar 1.1 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 scarabeus 1.22 # If the handbook USE-flag is set, and if this directory exists,
169 ingmar 1.1 # 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 scarabeus 1.9 # TODO: better formulation may be needed
178 ingmar 1.1 # @ECLASS-VARIABLE: KMEXTRACTONLY
179     # @DESCRIPTION:
180 scarabeus 1.9 # All subdirectories listed here will be extracted, but neither compiled nor installed.
181 ingmar 1.1 # 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 scarabeus 1.9 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in
191     # split ebuilds.
192 ingmar 1.1 kde4-meta_pkg_setup() {
193 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
194    
195 ingmar 1.1 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 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
204    
205     if [[ ${BUILD_TYPE} = live ]]; then
206 scarabeus 1.10 migrate_store_dir
207 scarabeus 1.11 S="${WORKDIR}/${P}"
208 scarabeus 1.10 mkdir -p "${S}"
209     ESVN_RESTRICT="export" subversion_src_unpack
210     subversion_wc_info
211     subversion_bootstrap
212 scarabeus 1.9 kde4-meta_src_extract
213     else
214     kde4-meta_src_extract
215     fi
216     }
217 ingmar 1.1
218 scarabeus 1.9 # FIXME: the difference between kde4-meta_src_extract and kde4-meta_src_unpack?
219 ingmar 1.1
220     # @FUNCTION: kde4-meta_src_extract
221     # @DESCRIPTION:
222     # A function to unpack the source for a split KDE ebuild.
223 scarabeus 1.9 # Also see KMMODULE, KMNOMODULE, KMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY and
224     # KMTARPARAMS.
225 ingmar 1.1 kde4-meta_src_extract() {
226 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
227    
228     if [[ ${BUILD_TYPE} = live ]]; then
229 scarabeus 1.9 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 scarabeus 1.12 targetdir=""
247     if [[ $subdir = doc/* && ! -e "$ESVN_WC_PATH/$kmnamedir$subdir" ]]; then
248     continue
249     fi
250 scarabeus 1.9
251 scarabeus 1.12 [[ ${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 scarabeus 1.9 done
255 ingmar 1.1
256 scarabeus 1.11 if [[ ${KMNAME} = kdebase-runtime && ${PN} != kdebase-data ]]; then
257 scarabeus 1.9 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 scarabeus 1.12 local abort tarball tarfile f extractlist moduleprefix postfix
262     case ${PV} in
263 scarabeus 1.22 4.2.85|4.2.90)
264 scarabeus 1.18 # block for normally packed upstream unstable snapshots
265     KMTARPARAMS="${KMTARPARAMS} --bzip2" # bz2
266     postfix="bz2"
267     ;;
268 scarabeus 1.12 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 scarabeus 1.9 kdebase-apps)
279 scarabeus 1.12 # 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 scarabeus 1.9 ;;
285     *)
286 scarabeus 1.12 # Create tarball name from module name (this is the default)
287     tarball="${KMNAME}-${PV}.tar.${postfix}"
288 scarabeus 1.9 ;;
289     esac
290 scarabeus 1.12
291     # Full patch to source tarball
292 scarabeus 1.11 tarfile="${DISTDIR}/${tarball}"
293 ingmar 1.1
294 scarabeus 1.12 # 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 scarabeus 1.9 ebegin "Unpacking parts of ${tarball} to ${WORKDIR}"
299 ingmar 1.1
300 scarabeus 1.9 kde4-meta_create_extractlists
301 ingmar 1.1
302 scarabeus 1.9 for f in cmake/ CMakeLists.txt ConfigureChecks.cmake config.h.cmake \
303     AUTHORS COPYING INSTALL README NEWS ChangeLog
304     do
305 scarabeus 1.12 extractlist="${extractlist} ${topdir}${moduleprefix}${f}"
306 scarabeus 1.9 done
307     extractlist="${extractlist} $(__list_needed_subdirectories)"
308 ingmar 1.1
309 scarabeus 1.9 pushd "${WORKDIR}" > /dev/null
310 scarabeus 1.11 [[ -n ${KDE4_STRICTER} ]] && echo tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} >&2
311     tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} 2> /dev/null
312 scarabeus 1.9
313 scarabeus 1.11 # Default $S is based on $P; rename the extracted directory to match $S if necessary
314 scarabeus 1.12 mv ${topdir} ${P} || die "Died while moving \"${topdir}\" to \"${P}\""
315 scarabeus 1.9
316     popd > /dev/null
317    
318     eend $?
319    
320 scarabeus 1.11 # We need to clear it here to make verification below work
321     unset moduleprefix
322    
323 scarabeus 1.9 if [[ -n ${KDE4_STRICTER} ]]; then
324     for f in $(__list_needed_subdirectories fatal); do
325 scarabeus 1.11 if [[ ! -e "${S}/${f#*/}" ]]; then
326 scarabeus 1.9 eerror "'${f#*/}' is missing"
327     abort=true
328     fi
329     done
330     [[ -n ${abort} ]] && die "There were missing files."
331     fi
332 scarabeus 1.12
333     # We don't need it anymore
334     unset topdir
335 zlin 1.4 fi
336 ingmar 1.1 }
337    
338 scarabeus 1.9 # @FUNCTION: kde4-meta_create_extractlists
339     # @DESCRIPTION:
340 ingmar 1.1 # Create lists of files and subdirectories to extract.
341 scarabeus 1.9 # Also see descriptions of KMMODULE, KMNOMODULE, KMEXTRA, KMCOMPILEONLY,
342     # KMEXTRACTONLY and KMTARPARAMS.
343 ingmar 1.1 kde4-meta_create_extractlists() {
344     debug-print-function ${FUNCNAME} "$@"
345    
346 scarabeus 1.17 # TODO change to KMEXTRA for more strict check
347 scarabeus 1.22 # 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 ingmar 1.1 # We use the basename of $KMMODULE because $KMMODULE can contain
355     # the path to the module subdirectory.
356 zlin 1.4 KMEXTRA_NONFATAL="${KMEXTRA_NONFATAL} doc/${KMMODULE##*/}"
357 ingmar 1.1 fi
358 scarabeus 1.22 fi
359 ingmar 1.1
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 scarabeus 1.9 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 ingmar 1.1 kdebase-runtime)
375 scarabeus 1.9 KMEXTRACTONLY="${KMEXTRACTONLY}
376     config-runtime.h.cmake"
377     ;;
378 ingmar 1.1 kdebase-workspace)
379 scarabeus 1.9 KMEXTRACTONLY="${KMEXTRACTONLY}
380     config-unix.h.cmake
381     ConfigureChecks.cmake
382     config-workspace.h.cmake
383     config-X11.h.cmake
384 scarabeus 1.11 startkde.cmake
385     KDE4WorkspaceConfig.cmake.in"
386 scarabeus 1.9 ;;
387 ingmar 1.1 kdegames)
388 scarabeus 1.11 if [[ ${PN} != libkdegames ]]; then
389 scarabeus 1.9 KMEXTRACTONLY="${KMEXTRACTONLY}
390     libkdegames"
391     fi
392     ;;
393     kdepim)
394 scarabeus 1.12 if [[ ${PN} != libkdepim ]]; then
395     KMEXTRACTONLY="${KMEXTRACTONLY}
396     libkdepim"
397     fi
398 alexxy 1.16 case ${SLOT} in
399     4.3|live)
400     KMEXTRACTONLY="${KMEXTRACTONLY}
401     kdepim-version.h
402     config-enterprise.h.cmake"
403     ;;
404     esac
405 ingmar 1.1 KMEXTRACTONLY="${KMEXTRACTONLY}
406 scarabeus 1.12 kleopatra/ConfigureChecks.cmake"
407 scarabeus 1.9 if has kontact ${IUSE//+} && use kontact; then
408     KMEXTRA="${KMEXTRA} kontact/plugins/${PLUGINNAME:-${PN}}"
409     KMEXTRACTONLY="${KMEXTRACTONLY} kontactinterfaces/"
410     fi
411     ;;
412 ingmar 1.1 koffice)
413     KMEXTRACTONLY="${KMEXTRACTONLY}
414     config-endian.h.cmake
415     filters/config-filters.h.cmake
416 scarabeus 1.9 config-openctl.h.cmake
417 ingmar 1.1 config-openexr.h.cmake
418     config-opengl.h.cmake
419     config-prefix.h.cmake"
420 scarabeus 1.9 ;;
421 ingmar 1.1 esac
422 scarabeus 1.9 # Don't install cmake modules for split ebuilds, to avoid collisions.
423 ingmar 1.1 case ${KMNAME} in
424 scarabeus 1.20 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 jmbsvicetto 1.7 case ${PN} in
437 scarabeus 1.17 libkdegames|libkdeedu|libkworkspace)
438 jmbsvicetto 1.7 KMEXTRA="${KMEXTRA}
439     cmake/modules/"
440     ;;
441     *)
442     KMCOMPILEONLY="${KMCOMPILEONLY}
443     cmake/modules/"
444     ;;
445     esac
446 ingmar 1.1 ;;
447     esac
448    
449     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: KMEXTRACTONLY ${KMEXTRACTONLY}"
450     }
451    
452     __list_needed_subdirectories() {
453 scarabeus 1.12 local i j kmextra kmextra_expanded kmmodule_expanded kmcompileonly_expanded extractlist
454 ingmar 1.1
455     # We expand KMEXTRA by adding CMakeLists.txt files
456 zlin 1.4 kmextra="${KMEXTRA}"
457     [[ ${1} != fatal ]] && kmextra="${kmextra} ${KMEXTRA_NONFATAL}"
458     for i in ${kmextra}; do
459 ingmar 1.1 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 scarabeus 1.11 if [[ -n ${KMMODULE} ]]; then
469 ingmar 1.1 kmmodule_expanded="${KMMODULE}"
470     j=$(dirname ${KMMODULE})
471     while [[ ${j} != "." ]]; do
472 scarabeus 1.11 kmmodule_expanded="${kmmodule_expanded} ${j}/CMakeLists.txt";
473     j=$(dirname ${j})
474 ingmar 1.1 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 scarabeus 1.12 # We append topdir only when specified (usually for tarballs)
493 ingmar 1.1 for i in ${kmmodule_expanded} ${kmextra_expanded} ${kmcompileonly_expanded} \
494     ${KMEXTRACTONLY}
495     do
496 scarabeus 1.11 extractlist="${extractlist} ${topdir}${moduleprefix}${i}"
497 ingmar 1.1 done
498    
499     echo ${extractlist}
500     }
501    
502 scarabeus 1.9 # @FUNCTION: kde4-meta_src_prepare
503 ingmar 1.1 # @DESCRIPTION:
504 scarabeus 1.9 # Meta-package build system configuration handling - commenting out targets, etc..
505     kde4-meta_src_prepare() {
506 ingmar 1.1 debug-print-function ${FUNCNAME} "$@"
507    
508 scarabeus 1.9 kde4-meta_change_cmakelists
509     kde4-base_src_prepare
510 ingmar 1.1 }
511    
512 scarabeus 1.9 # FIXME: no comment here?
513 ingmar 1.1 _change_cmakelists_parent_dirs() {
514     debug-print-function ${FUNCNAME} "$@"
515    
516     local _olddir _dir
517     _dir="${S}"/${1}
518     until [[ ${_dir} == "${S}" ]]; do
519 ingmar 1.6 _olddir=$(basename "${_dir}")
520     _dir=$(dirname "${_dir}")
521 ingmar 1.1 debug-print "${LINENO}: processing ${_dir} CMakeLists.txt searching for ${_olddir}"
522     if [[ -f ${_dir}/CMakeLists.txt ]]; then
523 ingmar 1.6 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 ingmar 1.1 fi
527     done
528     }
529    
530 scarabeus 1.9 # FIXME: add description
531     # @FUNCTION: kde4-meta_change_cmakelists
532     # @DESCRIPTION:
533 ingmar 1.1 kde4-meta_change_cmakelists() {
534 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
535 ingmar 1.1
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 ingmar 1.6 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 ingmar 1.1 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 scarabeus 1.12 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 ingmar 1.1 # 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 zlin 1.4 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 ingmar 1.1 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 scarabeus 1.9 # 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 scarabeus 1.11 if [[ ${PN} != kdebase-startkde && -f "${S}"/CMakeLists.txt ]]; then
602 scarabeus 1.9 # The startkde script moved to kdebase-workspace for KDE4 versions > 3.93.0.
603 ingmar 1.1 sed -i -e '/startkde/s/^/#DONOTINSTALL /' "${S}"/CMakeLists.txt || \
604     die "${LINENO}: sed died in the kdebase-startkde collision prevention section"
605 scarabeus 1.9 fi
606     # Strip EXPORT feature section from workspace for KDE4 versions > 4.1.82
607 scarabeus 1.11 if [[ ${PN} != libkworkspace ]]; then
608 scarabeus 1.20 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 scarabeus 1.9 fi
612     ;;
613     kdebase-runtime)
614     # COLLISION PROTECT section
615     # Only install the kde4 script as part of kde-base/kdebase-data
616 scarabeus 1.11 if [[ ${PN} != kdebase-data && -f "${S}"/CMakeLists.txt ]]; then
617 scarabeus 1.9 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 ingmar 1.1 ;;
628     esac
629 ingmar 1.6 ;;
630 scarabeus 1.17 kdewebdev)
631     # Disable hardcoded kdepimlibs check
632     sed -e 's/find_package(KdepimLibs REQUIRED)/macro_optional_find_package(KdepimLibs)/' \
633 scarabeus 1.20 -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 scarabeus 1.17 -i CMakeLists.txt || die "failed to disable hardcoded checks"
637     ;;
638 scarabeus 1.11 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 ingmar 1.1 esac
649    
650     popd > /dev/null
651     }
652    
653     # @FUNCTION: kde4-meta_src_configure
654     # @DESCRIPTION:
655 scarabeus 1.9 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in split
656 ingmar 1.1 # ebuilds.
657     kde4-meta_src_configure() {
658 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
659 ingmar 1.1
660 scarabeus 1.17 # 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 ingmar 1.1 kde4-base_src_configure
674     }
675    
676 scarabeus 1.9 # @FUNCTION: kde4-meta_src_compile
677 ingmar 1.1 # @DESCRIPTION:
678 scarabeus 1.9 # General function for compiling split KDE4 applications.
679     # Overrides kde4-base_src_compile.
680     kde4-meta_src_compile() {
681 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
682 ingmar 1.1
683 scarabeus 1.13 kde4-base_src_compile
684 ingmar 1.1 }
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 scarabeus 1.17 kde4-base_src_install
703 ingmar 1.1 }
704    
705     # @FUNCTION: kde4-meta_src_make_doc
706     # @DESCRIPTION:
707 scarabeus 1.9 # This function searches in ${S}/${KMMODULE},
708 ingmar 1.1 # and tries to install "AUTHORS ChangeLog* README* NEWS todo" if these files exist.
709     kde4-meta_src_make_doc() {
710 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
711 ingmar 1.1
712     local doc
713     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
714 scarabeus 1.11 [[ -s ${KMMODULE}/${doc} ]] && newdoc "${KMMODULE}/${doc}" "${doc}.${KMMODULE##*/}"
715 ingmar 1.1 done
716    
717     kde4-base_src_make_doc
718     }
719    
720     # @FUNCTION: kde4-meta_pkg_postinst
721     # @DESCRIPTION:
722 scarabeus 1.17 # Display information about application handbook and invoke kbuildsycoca4.
723 ingmar 1.1 kde4-meta_pkg_postinst() {
724 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
725    
726 scarabeus 1.22 if has handbook ${IUSE//+} && ! use handbook; then
727 scarabeus 1.17 echo
728     einfo "Application handbook for ${PN} has not been installed."
729 scarabeus 1.22 einfo "To install handbook, reemerge =${CATEGORY}/${P} with 'handbook' USE flag."
730 scarabeus 1.17 echo
731     fi
732    
733 ingmar 1.1 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 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
742    
743 ingmar 1.1 kde4-base_pkg_postrm
744     }

  ViewVC Help
Powered by ViewVC 1.1.20