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

Contents of /eclass/kde4-meta.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.50 - (hide annotations) (download)
Fri Mar 11 19:50:52 2011 UTC (3 years, 1 month ago) by dilfridge
Branch: MAIN
Changes since 1.49: +26 -5 lines
<=gcc-4.3 and >=kde-4.6 dont mix well, so prevent the doomed attempt in the eclass

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

  ViewVC Help
Powered by ViewVC 1.1.20