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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.32 - (hide annotations) (download)
Mon Jan 11 17:27:35 2010 UTC (4 years, 11 months ago) by scarabeus
Branch: MAIN
Changes since 1.31: +2 -2 lines
Fix eclassdoc for kde4-meta.

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

  ViewVC Help
Powered by ViewVC 1.1.20