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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (hide annotations) (download)
Thu Mar 12 17:53:05 2009 UTC (5 years, 6 months ago) by scarabeus
Branch: MAIN
Changes since 1.14: +3 -2 lines
Fix typo in meta eclass. Thanks reavertm for spotting this.

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.15 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-meta.eclass,v 1.14 2009/03/12 12:01:14 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 ingmar 1.1 KMEXTRACTONLY="${KMEXTRACTONLY}
393 scarabeus 1.12 kleopatra/ConfigureChecks.cmake"
394 scarabeus 1.9 if has kontact ${IUSE//+} && use kontact; then
395     KMEXTRA="${KMEXTRA} kontact/plugins/${PLUGINNAME:-${PN}}"
396     KMEXTRACTONLY="${KMEXTRACTONLY} kontactinterfaces/"
397     fi
398     ;;
399 ingmar 1.1 koffice)
400     KMEXTRACTONLY="${KMEXTRACTONLY}
401     config-endian.h.cmake
402     filters/config-filters.h.cmake
403 scarabeus 1.9 config-openctl.h.cmake
404 ingmar 1.1 config-openexr.h.cmake
405     config-opengl.h.cmake
406     config-prefix.h.cmake"
407 scarabeus 1.9 ;;
408 ingmar 1.1 esac
409 scarabeus 1.9 # Don't install cmake modules for split ebuilds, to avoid collisions.
410 ingmar 1.1 case ${KMNAME} in
411 jmbsvicetto 1.7 kdebase-runtime|kdebase-workspace|kdeedu|kdegames|kdegraphics|kdepim)
412     case ${PN} in
413 scarabeus 1.9 libkdegames|libkdeedu|marble|libkworkspace)
414 jmbsvicetto 1.7 KMEXTRA="${KMEXTRA}
415     cmake/modules/"
416     ;;
417     *)
418     KMCOMPILEONLY="${KMCOMPILEONLY}
419     cmake/modules/"
420     ;;
421     esac
422 ingmar 1.1 ;;
423     esac
424    
425     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: KMEXTRACTONLY ${KMEXTRACTONLY}"
426     }
427    
428     __list_needed_subdirectories() {
429 scarabeus 1.12 local i j kmextra kmextra_expanded kmmodule_expanded kmcompileonly_expanded extractlist
430 ingmar 1.1
431     # We expand KMEXTRA by adding CMakeLists.txt files
432 zlin 1.4 kmextra="${KMEXTRA}"
433     [[ ${1} != fatal ]] && kmextra="${kmextra} ${KMEXTRA_NONFATAL}"
434     for i in ${kmextra}; do
435 ingmar 1.1 kmextra_expanded="${kmextra_expanded} ${i}"
436     j=$(dirname ${i})
437     while [[ ${j} != "." ]]; do
438     kmextra_expanded="${kmextra_expanded} ${j}/CMakeLists.txt";
439     j=$(dirname ${j})
440     done
441     done
442    
443     # Expand KMMODULE
444 scarabeus 1.11 if [[ -n ${KMMODULE} ]]; then
445 ingmar 1.1 kmmodule_expanded="${KMMODULE}"
446     j=$(dirname ${KMMODULE})
447     while [[ ${j} != "." ]]; do
448 scarabeus 1.11 kmmodule_expanded="${kmmodule_expanded} ${j}/CMakeLists.txt";
449     j=$(dirname ${j})
450 ingmar 1.1 done
451     fi
452    
453     # Expand KMCOMPILEONLY
454     for i in ${KMCOMPILEONLY}; do
455     kmcompileonly_expanded="${kmcompileonly_expanded} ${i}"
456     j=$(dirname ${i})
457     while [[ ${j} != "." ]]; do
458     kmcompileonly_expanded="${kmcompileonly_expanded} ${j}/CMakeLists.txt";
459     j=$(dirname ${j})
460     done
461     done
462    
463     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmextra_expanded: ${kmextra_expanded}"
464     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmmodule_expanded: ${kmmodule_expanded}"
465     debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmcompileonly_expanded: ${kmcompileonly_expanded}"
466    
467     # Create final list of stuff to extract
468 scarabeus 1.12 # We append topdir only when specified (usually for tarballs)
469 ingmar 1.1 for i in ${kmmodule_expanded} ${kmextra_expanded} ${kmcompileonly_expanded} \
470     ${KMEXTRACTONLY}
471     do
472 scarabeus 1.11 extractlist="${extractlist} ${topdir}${moduleprefix}${i}"
473 ingmar 1.1 done
474    
475     echo ${extractlist}
476     }
477    
478 scarabeus 1.9 # @FUNCTION: kde4-meta_src_prepare
479 ingmar 1.1 # @DESCRIPTION:
480 scarabeus 1.9 # Meta-package build system configuration handling - commenting out targets, etc..
481     kde4-meta_src_prepare() {
482 ingmar 1.1 debug-print-function ${FUNCNAME} "$@"
483    
484 scarabeus 1.9 kde4-meta_change_cmakelists
485     kde4-base_src_prepare
486 ingmar 1.1 }
487    
488 scarabeus 1.9 # FIXME: no comment here?
489 ingmar 1.1 _change_cmakelists_parent_dirs() {
490     debug-print-function ${FUNCNAME} "$@"
491    
492     local _olddir _dir
493     _dir="${S}"/${1}
494     until [[ ${_dir} == "${S}" ]]; do
495 ingmar 1.6 _olddir=$(basename "${_dir}")
496     _dir=$(dirname "${_dir}")
497 ingmar 1.1 debug-print "${LINENO}: processing ${_dir} CMakeLists.txt searching for ${_olddir}"
498     if [[ -f ${_dir}/CMakeLists.txt ]]; then
499 ingmar 1.6 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" \
500     -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" \
501     -i ${_dir}/CMakeLists.txt || die "${LINENO}: died in ${FUNCNAME} while processing ${_dir}"
502 ingmar 1.1 fi
503     done
504     }
505    
506 scarabeus 1.9 # FIXME: add description
507     # @FUNCTION: kde4-meta_change_cmakelists
508     # @DESCRIPTION:
509 ingmar 1.1 kde4-meta_change_cmakelists() {
510 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
511 ingmar 1.1
512     pushd "${S}" > /dev/null
513    
514     comment_all_add_subdirectory ./
515    
516     # Restore "add_subdirectory( cmake )" in ${S}/CMakeLists.txt
517     if [[ -f "${S}"/CMakeLists.txt ]]; then
518 ingmar 1.6 sed -e '/add_subdirectory[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' \
519     -e '/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' \
520     -i "${S}"/CMakeLists.txt || die "${LINENO}: cmake sed died"
521 ingmar 1.1 fi
522    
523     if [[ -z ${KMNOMODULE} ]]; then
524     # Restore "add_subdirectory" in $KMMODULE subdirectories
525     find "${S}"/${KMMODULE} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
526     die "${LINENO}: died in KMMODULE section"
527     _change_cmakelists_parent_dirs ${KMMODULE}
528     fi
529    
530 scarabeus 1.12 local i
531    
532     # KMEXTRACTONLY section - Some ebuilds need to comment out some subdirs in KMMODULE and they use KMEXTRACTONLY
533     for i in ${KMEXTRACTONLY}; do
534     if [[ -d "${S}"/${i} && -f "${S}"/${i}/../CMakeLists.txt ]]; then
535     sed -i -e "/([[:space:]]*$(basename $i)[[:space:]]*)/s/^/#DONOTCOMPILE /" "${S}"/${i}/../CMakeLists.txt || \
536     die "${LINENO}: sed died while working in the KMEXTRACTONLY section while processing ${i}"
537     fi
538     done
539    
540 ingmar 1.1 # KMCOMPILEONLY
541     for i in ${KMCOMPILEONLY}; do
542     debug-print "${LINENO}: KMCOMPILEONLY, processing ${i}"
543     # Uncomment "add_subdirectory" instructions inside $KMCOMPILEONLY, then comment "install" instructions.
544     find "${S}"/${i} -name CMakeLists.txt -print0 | \
545     xargs -0 sed -i \
546     -e 's/^#DONOTCOMPILE //g' \
547     -e '/install(.*)/{s/^/#DONOTINSTALL /;}' \
548     -e '/^install(/,/)/{s/^/#DONOTINSTALL /;}' \
549     -e '/kde4_install_icons(.*)/{s/^/#DONOTINSTALL /;}' || \
550     die "${LINENO}: sed died in the KMCOMPILEONLY section while processing ${i}"
551     _change_cmakelists_parent_dirs ${i}
552     done
553    
554     # KMEXTRA section
555     for i in ${KMEXTRA}; do
556     debug-print "${LINENO}: KMEXTRA section, processing ${i}"
557 zlin 1.4 find "${S}"/${i} -name CMakeLists.txt -print0 | \
558     xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
559     die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}"
560     _change_cmakelists_parent_dirs ${i}
561     done
562     # KMEXTRA_NONFATAL section
563     for i in ${KMEXTRA_NONFATAL}; do
564 ingmar 1.1 if [[ -d "${S}"/${i} ]]; then
565     find "${S}"/${i} -name CMakeLists.txt -print0 | \
566     xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || \
567     die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}"
568     _change_cmakelists_parent_dirs ${i}
569     fi
570     done
571    
572     case ${KMNAME} in
573     kdebase-workspace)
574 scarabeus 1.9 # COLLISION PROTECT section
575     # Install the startkde script just once, as a part of kde-base/kdebase-startkde,
576     # not as a part of every package.
577 scarabeus 1.11 if [[ ${PN} != kdebase-startkde && -f "${S}"/CMakeLists.txt ]]; then
578 scarabeus 1.9 # The startkde script moved to kdebase-workspace for KDE4 versions > 3.93.0.
579 ingmar 1.1 sed -i -e '/startkde/s/^/#DONOTINSTALL /' "${S}"/CMakeLists.txt || \
580     die "${LINENO}: sed died in the kdebase-startkde collision prevention section"
581 scarabeus 1.9 fi
582     # Strip EXPORT feature section from workspace for KDE4 versions > 4.1.82
583 scarabeus 1.11 if [[ ${PN} != libkworkspace ]]; then
584     sed -i -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' \
585     CMakeLists.txt || die "${LINENO}: sed died in kdebase-workspace strip EXPORT section"
586 scarabeus 1.9 fi
587     ;;
588     kdebase-runtime)
589     # COLLISION PROTECT section
590     # Only install the kde4 script as part of kde-base/kdebase-data
591 scarabeus 1.11 if [[ ${PN} != kdebase-data && -f "${S}"/CMakeLists.txt ]]; then
592 scarabeus 1.9 sed -i -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' \
593     "${S}"/CMakeLists.txt || die "Sed to exclude bin/kde4 failed"
594     fi
595     ;;
596     kdepim)
597     case ${PN} in
598     kaddressbook|kalarm|kmailcvt|kontact|korganizer|korn)
599     sed -i -n -e '/qt4_generate_dbus_interface(.*org\.kde\.kmail\.\(kmail\|mailcomposer\)\.xml/p' \
600     -e '/add_custom_target(kmail_xml /,/)/p' "${S}"/kmail/CMakeLists.txt || die "uncommenting xml failed"
601     _change_cmakelists_parent_dirs kmail
602 ingmar 1.1 ;;
603     esac
604 ingmar 1.6 ;;
605 scarabeus 1.11 koffice)
606     # prevent collisions
607     if [[ ${PN} != koffice-data ]]; then
608     sed -i -e '/install(.*FindKOfficeLibs.cmake/,/)/ d' \
609     "${S}"/cmake/modules/CMakeLists.txt || \
610     die "${LINENO}: sed died in collision prevention section"
611     sed -i -n -e '1h;1!H;${g;s/install(.\+config-openexr.h.\+)//;p}' \
612     "${S}"/CMakeLists.txt || \
613     die "${LINENO}: sed died in collision prevention section"
614     fi
615 ingmar 1.1 esac
616    
617     popd > /dev/null
618     }
619    
620     # @FUNCTION: kde4-meta_src_configure
621     # @DESCRIPTION:
622 scarabeus 1.9 # Currently just calls its equivalent in kde4-base.eclass(5). Use this one in split
623 ingmar 1.1 # ebuilds.
624     kde4-meta_src_configure() {
625 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
626 ingmar 1.1
627     kde4-base_src_configure
628     }
629    
630 scarabeus 1.9 # @FUNCTION: kde4-meta_src_compile
631 ingmar 1.1 # @DESCRIPTION:
632 scarabeus 1.9 # General function for compiling split KDE4 applications.
633     # Overrides kde4-base_src_compile.
634     kde4-meta_src_compile() {
635 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
636 ingmar 1.1
637 scarabeus 1.13 kde4-base_src_compile
638 ingmar 1.1 }
639    
640     # @FUNCTION: kde4-meta_src_test
641     # @DESCRIPTION:
642     # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
643     # ebuilds.
644     kde4-meta_src_test() {
645     debug-print-function $FUNCNAME "$@"
646    
647     kde4-base_src_test
648     }
649    
650     # @FUNCTION: kde4-meta_src_install
651     # @DESCRIPTION:
652     # Function for installing KDE4 split applications.
653     kde4-meta_src_install() {
654     debug-print-function $FUNCNAME "$@"
655    
656     kde4-meta_src_make_doc
657     cmake-utils_src_install
658 ingmar 1.6
659 scarabeus 1.9 if [[ -n ${KMSAVELIBS} ]]; then
660 ingmar 1.6 install_library_dependencies
661     fi
662 ingmar 1.1 }
663    
664     # @FUNCTION: kde4-meta_src_make_doc
665     # @DESCRIPTION:
666 scarabeus 1.9 # This function searches in ${S}/${KMMODULE},
667 ingmar 1.1 # and tries to install "AUTHORS ChangeLog* README* NEWS todo" if these files exist.
668     kde4-meta_src_make_doc() {
669 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
670 ingmar 1.1
671     local doc
672     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
673 scarabeus 1.11 [[ -s ${KMMODULE}/${doc} ]] && newdoc "${KMMODULE}/${doc}" "${doc}.${KMMODULE##*/}"
674 ingmar 1.1 done
675    
676     kde4-base_src_make_doc
677     }
678    
679     # @FUNCTION: kde4-meta_pkg_postinst
680     # @DESCRIPTION:
681     # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
682     # ebuilds.
683     kde4-meta_pkg_postinst() {
684 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
685    
686 ingmar 1.1 kde4-base_pkg_postinst
687     }
688    
689     # @FUNCTION: kde4-meta_pkg_postrm
690     # @DESCRIPTION:
691     # Currently just calls its equivalent in kde4-base.eclass(5). Use this in split
692     # ebuilds.
693     kde4-meta_pkg_postrm() {
694 scarabeus 1.11 debug-print-function ${FUNCNAME} "$@"
695    
696 ingmar 1.1 kde4-base_pkg_postrm
697     }

  ViewVC Help
Powered by ViewVC 1.1.20