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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.16 - (hide annotations) (download)
Sun Mar 15 15:27:13 2009 UTC (5 years, 5 months ago) by alexxy
Branch: MAIN
Changes since 1.15: +8 -1 lines
Update kde4-meta eclass for proper working with KDE 4.3 snapshots

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

  ViewVC Help
Powered by ViewVC 1.1.20