| 1 | # Copyright 1999-2011 Gentoo Foundation |
1 | # Copyright 1999-2012 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-meta.eclass,v 1.54 2011/06/07 20:11:04 abcd Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-meta.eclass,v 1.61 2012/03/24 20:44:51 dilfridge Exp $ |
| 4 | # |
4 | # |
| 5 | # @ECLASS: kde4-meta.eclass |
5 | # @ECLASS: kde4-meta.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # kde@gentoo.org |
7 | # kde@gentoo.org |
| 8 | # @BLURB: Eclass for writing "split" KDE packages. |
8 | # @BLURB: Eclass for writing "split" KDE packages. |
| … | |
… | |
| 178 | einfo "Exporting parts of working copy to ${S}" |
178 | einfo "Exporting parts of working copy to ${S}" |
| 179 | kde4-meta_create_extractlists |
179 | kde4-meta_create_extractlists |
| 180 | |
180 | |
| 181 | case ${KDE_SCM} in |
181 | case ${KDE_SCM} in |
| 182 | svn) |
182 | svn) |
| 183 | local rsync_options subdir kmnamedir targetdir wc_path escm |
183 | local rsync_options subdir targetdir wc_path escm |
| 184 | |
184 | |
| 185 | rsync_options="--group --links --owner --perms --quiet --exclude=.svn/ --exclude=.git/" |
185 | rsync_options="--group --links --owner --perms --quiet --exclude=.svn/ --exclude=.git/" |
| 186 | wc_path="${ESVN_WC_PATH}" |
186 | wc_path="${ESVN_WC_PATH}" |
| 187 | escm="{ESVN}" |
187 | escm="{ESVN}" |
| 188 | |
188 | |
| 189 | # Copy ${KMNAME} non-recursively (toplevel files) |
189 | # Copy ${KMNAME} non-recursively (toplevel files) |
| 190 | rsync ${rsync_options} "${wc_path}"/${kmnamedir}* "${S}" \ |
190 | rsync ${rsync_options} "${wc_path}"/* "${S}" \ |
| 191 | || die "${escm}: can't export toplevel files to '${S}'." |
191 | || die "${escm}: can't export toplevel files to '${S}'." |
| 192 | # Copy cmake directory |
192 | # Copy cmake directory |
| 193 | if [[ -d "${wc_path}/${kmnamedir}cmake" ]]; then |
193 | if [[ -d "${wc_path}/cmake" ]]; then |
| 194 | rsync --recursive ${rsync_options} "${wc_path}/${kmnamedir}cmake" "${S}" \ |
194 | rsync --recursive ${rsync_options} "${wc_path}/cmake" "${S}" \ |
| 195 | || die "${escm}: can't export cmake files to '${S}'." |
195 | || die "${escm}: can't export cmake files to '${S}'." |
| 196 | fi |
196 | fi |
| 197 | # Copy all subdirectories |
197 | # Copy all subdirectories |
| 198 | for subdir in $(__list_needed_subdirectories); do |
198 | for subdir in $(__list_needed_subdirectories); do |
| 199 | targetdir="" |
199 | targetdir="" |
| 200 | if [[ $subdir = doc/* && ! -e "$wc_path/$kmnamedir$subdir" ]]; then |
200 | if [[ $subdir = doc/* && ! -e "$wc_path/$subdir" ]]; then |
| 201 | continue |
201 | continue |
| 202 | fi |
202 | fi |
| 203 | |
203 | |
| 204 | [[ ${subdir%/} = */* ]] && targetdir=${subdir%/} && targetdir=${targetdir%/*} && mkdir -p "${S}/${targetdir}" |
204 | [[ ${subdir%/} = */* ]] && targetdir=${subdir%/} && targetdir=${targetdir%/*} && mkdir -p "${S}/${targetdir}" |
| 205 | rsync --recursive ${rsync_options} "${wc_path}/${kmnamedir}${subdir%/}" "${S}/${targetdir}" \ |
205 | rsync --recursive ${rsync_options} "${wc_path}/${subdir%/}" "${S}/${targetdir}" \ |
| 206 | || die "${escm}: can't export subdirectory '${subdir}' to '${S}/${targetdir}'." |
206 | || die "${escm}: can't export subdirectory '${subdir}' to '${S}/${targetdir}'." |
| 207 | done |
207 | done |
| 208 | ;; |
208 | ;; |
| 209 | esac |
209 | esac |
| 210 | else |
210 | else |
| 211 | local abort tarball tarfile f extractlist postfix |
211 | local abort tarball tarfile f extractlist postfix |
| 212 | |
212 | |
|
|
213 | if [[ ${PV} == 4.8.1 ]]; then |
|
|
214 | postfix="xz" |
|
|
215 | KMTARPARAMS+=" --xz" |
|
|
216 | else |
|
|
217 | postfix="bz2" |
| 213 | KMTARPARAMS+=" --bzip2" |
218 | KMTARPARAMS+=" --bzip2" |
| 214 | postfix="bz2" |
219 | fi |
| 215 | |
220 | |
| 216 | case ${KMNAME} in |
221 | case ${KMNAME} in |
| 217 | kdebase-apps) |
222 | kdebase-apps) |
| 218 | # kdebase/apps -> kdebase-apps |
223 | # kdebase/apps -> kdebase-apps |
| 219 | tarball="kdebase-${PV}.tar.${postfix}" |
224 | tarball="kdebase-${PV}.tar.${postfix}" |
| … | |
… | |
| 287 | kde4-meta_create_extractlists() { |
292 | kde4-meta_create_extractlists() { |
| 288 | debug-print-function ${FUNCNAME} "$@" |
293 | debug-print-function ${FUNCNAME} "$@" |
| 289 | |
294 | |
| 290 | # Add default handbook locations |
295 | # Add default handbook locations |
| 291 | # FIXME - legacy code - remove when 4.4.5 is gone or preferrably port 4.4.5. |
296 | # FIXME - legacy code - remove when 4.4.5 is gone or preferrably port 4.4.5. |
| 292 | if [[ $(get_kde_version) < 4.5 ]] && has handbook ${IUSE//+} && use handbook && [[ -z ${KMNOMODULE} ]]; then |
297 | if [[ $(get_kde_version) < 4.5 ]] && use_if_iuse handbook && [[ -z ${KMNOMODULE} ]]; then |
| 293 | # We use the basename of $KMMODULE because $KMMODULE can contain |
298 | # We use the basename of $KMMODULE because $KMMODULE can contain |
| 294 | # the path to the module subdirectory. |
299 | # the path to the module subdirectory. |
| 295 | KMEXTRA_NONFATAL+=" |
300 | KMEXTRA_NONFATAL+=" |
| 296 | doc/${KMMODULE##*/}" |
301 | doc/${KMMODULE##*/}" |
| 297 | fi |
302 | fi |
| … | |
… | |
| 303 | |
308 | |
| 304 | # Add some CMake-files to KMEXTRACTONLY. |
309 | # Add some CMake-files to KMEXTRACTONLY. |
| 305 | # Note that this actually doesn't include KMEXTRA handling. |
310 | # Note that this actually doesn't include KMEXTRA handling. |
| 306 | # In those cases you should care to add the relevant files to KMEXTRACTONLY |
311 | # In those cases you should care to add the relevant files to KMEXTRACTONLY |
| 307 | case ${KMNAME} in |
312 | case ${KMNAME} in |
| 308 | kdebase | kdebase-apps | kde-base-apps) |
313 | kdebase | kdebase-apps | kde-baseapps) |
| 309 | KMEXTRACTONLY+=" |
314 | KMEXTRACTONLY+=" |
| 310 | config-apps.h.cmake |
315 | config-apps.h.cmake |
| 311 | ConfigureChecks.cmake" |
316 | ConfigureChecks.cmake" |
| 312 | ;; |
317 | ;; |
| 313 | kdebase-runtime | kde-runtime) |
318 | kdebase-runtime | kde-runtime) |
| … | |
… | |
| 344 | kdepim-version.h.cmake" |
349 | kdepim-version.h.cmake" |
| 345 | else |
350 | else |
| 346 | KMEXTRACTONLY+=" |
351 | KMEXTRACTONLY+=" |
| 347 | kdepim-version.h" |
352 | kdepim-version.h" |
| 348 | fi |
353 | fi |
| 349 | if has kontact ${IUSE//+} && use kontact; then |
354 | if use_if_iuse kontact; then |
| 350 | KMEXTRA+=" |
355 | KMEXTRA+=" |
| 351 | kontact/plugins/${PLUGINNAME:-${PN}}/" |
356 | kontact/plugins/${PLUGINNAME:-${PN}}/" |
| 352 | fi |
357 | fi |
| 353 | ;; |
358 | ;; |
| 354 | kdeutils) |
359 | kdeutils) |
| … | |
… | |
| 375 | # should not try in that case |
380 | # should not try in that case |
| 376 | # note2: kdeedu 4.6.4 does not have a cmake/modules/ subdir anymore :( |
381 | # note2: kdeedu 4.6.4 does not have a cmake/modules/ subdir anymore :( |
| 377 | # it may be possible to formulate this shorter, but it should also |
382 | # it may be possible to formulate this shorter, but it should also |
| 378 | # still be understandable... |
383 | # still be understandable... |
| 379 | if [[ ${KMNAME} != kdegraphics || ( ( $(get_kde_version) != 4.6 || ${PV} < 4.6.2 ) && $(get_kde_version) < 4.7 ) ]] \ |
384 | if [[ ${KMNAME} != kdegraphics || ( ( $(get_kde_version) != 4.6 || ${PV} < 4.6.2 ) && $(get_kde_version) < 4.7 ) ]] \ |
| 380 | && ! [[ ${KMNAME} == kdeedu && ${PV} == 4.6.4 ]]; then |
385 | && ! [[ ${KMNAME} == kdeedu && ( ${PV} == 4.6.4 || ${PV} == 4.6.5 ) ]]; then |
| 381 | case ${KMNAME} in |
386 | case ${KMNAME} in |
| 382 | kdebase-runtime|kde-runtime|kdebase-workspace|kde-workspace|kdeedu|kdegames|kdegraphics) |
387 | kdebase-runtime|kde-runtime|kdebase-workspace|kde-workspace|kdeedu|kdegames|kdegraphics) |
| 383 | case ${PN} in |
388 | case ${PN} in |
| 384 | libkdegames|libkdeedu|libkworkspace) |
389 | libkdegames|libkdeedu|libkworkspace) |
| 385 | KMEXTRA+=" |
390 | KMEXTRA+=" |
| … | |
… | |
| 554 | if [[ ${PN} != kdebase-startkde && -f CMakeLists.txt ]]; then |
559 | if [[ ${PN} != kdebase-startkde && -f CMakeLists.txt ]]; then |
| 555 | # The startkde script moved to kdebase-workspace for KDE4 versions > 3.93.0. |
560 | # The startkde script moved to kdebase-workspace for KDE4 versions > 3.93.0. |
| 556 | sed -e '/startkde/s/^/#DONOTINSTALL /' \ |
561 | sed -e '/startkde/s/^/#DONOTINSTALL /' \ |
| 557 | -i CMakeLists.txt || die "${LINENO}: sed died in the kdebase-startkde collision prevention section" |
562 | -i CMakeLists.txt || die "${LINENO}: sed died in the kdebase-startkde collision prevention section" |
| 558 | fi |
563 | fi |
|
|
564 | # Remove workspace target prefix in order to get direct linking to workspace libs |
|
|
565 | sed -e '/set(KDE4WORKSPACE_TARGET_PREFIX/s/^/#OVERRIDE /' \ |
|
|
566 | -i CMakeLists.txt || die "${LINENO}: sed died in KDE4WORKSPACE_TARGET_PREFIX removal section" |
| 559 | # Strip EXPORT feature section from workspace for KDE4 versions > 4.1.82 |
567 | # Strip EXPORT feature section from workspace for KDE4 versions > 4.1.82 |
| 560 | if [[ ${PN} != libkworkspace ]]; then |
568 | if [[ ${PN} != libkworkspace ]]; then |
| 561 | sed -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' \ |
569 | sed -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' \ |
| 562 | -i CMakeLists.txt || die "${LINENO}: sed died in kdebase-workspace strip config install and fix EXPORT section" |
570 | -i CMakeLists.txt || die "${LINENO}: sed died in kde-workspace strip config install and fix EXPORT section" |
|
|
571 | fi |
|
|
572 | if [[ ${PN} != plasma-workspace ]]; then |
|
|
573 | sed -e '/KActivities/s/REQUIRED//' \ |
|
|
574 | -i CMakeLists.txt || die "${LINENO}: sed died in kde-workspace dep reduction section" |
|
|
575 | fi |
|
|
576 | if [[ "${PN}" != "kwin" ]]; then |
|
|
577 | sed -i -e "/^ macro_log_feature(OPENGL_OR_ES_FOUND/s/TRUE/FALSE/" \ |
|
|
578 | "${S}"/CMakeLists.txt || die "${LINENO}: sed died removing kde-workspace opengl dependency" |
| 563 | fi |
579 | fi |
| 564 | ;; |
580 | ;; |
| 565 | kdebase-runtime | kde-runtime) |
581 | kdebase-runtime | kde-runtime) |
| 566 | # COLLISION PROTECT section |
582 | # COLLISION PROTECT section |
| 567 | # Only install the kde4 script as part of kde-base/kdebase-data |
583 | # Only install the kde4 script as part of kde-base/kdebase-data |
| … | |
… | |
| 578 | kdepim) |
594 | kdepim) |
| 579 | # Disable hardcoded checks |
595 | # Disable hardcoded checks |
| 580 | sed -r -e '/find_package\(KdepimLibs/s/REQUIRED//' \ |
596 | sed -r -e '/find_package\(KdepimLibs/s/REQUIRED//' \ |
| 581 | -e '/find_package\((KdepimLibs|Boost|QGpgme|Akonadi|ZLIB|Strigi|SharedDesktopOntologies|Soprano|Nepomuk)/{/macro_optional_/!s/find/macro_optional_&/}' \ |
597 | -e '/find_package\((KdepimLibs|Boost|QGpgme|Akonadi|ZLIB|Strigi|SharedDesktopOntologies|Soprano|Nepomuk)/{/macro_optional_/!s/find/macro_optional_&/}' \ |
| 582 | -e '/macro_log_feature\((Boost|QGPGME|Akonadi|ZLIB|STRIGI|SHAREDDESKTOPONTOLOGIES|Soprano|Nepomuk)_FOUND/s/ TRUE / FALSE /' \ |
598 | -e '/macro_log_feature\((Boost|QGPGME|Akonadi|ZLIB|STRIGI|SHAREDDESKTOPONTOLOGIES|Soprano|Nepomuk)_FOUND/s/ TRUE / FALSE /' \ |
| 583 | -e '/if[[:space:]]*([[:space:]]*BUILD_.*)/s/^/#OVERRIDE /' \ |
599 | -e 's/if[[:space:]]*([[:space:]]*BUILD_.*)[[:space:]]*/if(1) # &/' \ |
| 584 | -e '/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)/s/^/#OVERRIDE /' \ |
600 | -e 's/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)[[:space:]]*$/if(1) # &/' \ |
| 585 | -i CMakeLists.txt || die "failed to disable hardcoded checks" |
601 | -i CMakeLists.txt || die "failed to disable hardcoded checks" |
| 586 | # Disable broken or redundant build logic |
602 | # Disable broken or redundant build logic |
| 587 | if ( has kontact ${IUSE//+} && use kontact ) || [[ ${PN} = kontact ]]; then |
603 | if use_if_iuse kontact || [[ ${PN} = kontact ]]; then |
| 588 | sed -e '/if[[:space:]]*([[:space:]]*BUILD_.*)/s/^/#OVERRIDE /' \ |
604 | sed -e 's/if[[:space:]]*([[:space:]]*BUILD_.*)[[:space:]]*$/if(1) # &/' \ |
| 589 | -e '/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)/s/^/#OVERRIDE /' \ |
605 | -e 's/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)[[:space:]]*$/if(1) # &/' \ |
| 590 | -i kontact/plugins/CMakeLists.txt || die 'failed to override build logic' |
606 | -i kontact/plugins/CMakeLists.txt || die 'failed to override build logic' |
| 591 | fi |
607 | fi |
| 592 | if [[ $(get_kde_version) < 4.5 ]]; then |
608 | if [[ $(get_kde_version) < 4.5 ]]; then |
| 593 | case ${PN} in |
609 | case ${PN} in |
| 594 | kalarm|kmailcvt|kontact|korganizer|korn) |
610 | kalarm|kmailcvt|kontact|korganizer|korn) |