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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.51 - (hide annotations) (download)
Wed Apr 6 14:22:14 2011 UTC (3 years, 3 months ago) by scarabeus
Branch: MAIN
Changes since 1.50: +116 -155 lines
Move fixes for kde4-* eclasses from overlay here:
Removal of eapi2 support.
Removal of quirks for eapi2 and koffice.
Additon of fdo/gnome-func eclasses to nicely update mime info.
Various whitespace and tiny bugs cleanups.
Addition of git to support upstream slowly moving to git.

Add new eclass for kde4-meta packages. Written by ABCD. Allows us smaller
meta packages.

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

  ViewVC Help
Powered by ViewVC 1.1.20