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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.39 - (hide annotations) (download)
Mon Aug 9 15:59:04 2010 UTC (3 years, 11 months ago) by reavertm
Branch: MAIN
Changes since 1.38: +3 -8 lines
Merge changes from overlay: remove kde 4.3 support, do not call epatch_user twice, bump cmake dep

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

  ViewVC Help
Powered by ViewVC 1.1.20