| 1 | # Copyright 1999-2011 Gentoo Foundation |
1 | # Copyright 1999-2011 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-functions.eclass,v 1.46 2011/04/21 22:32:33 dilfridge Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.54 2011/06/15 22:03:13 abcd Exp $ |
| 4 | |
4 | |
| 5 | inherit versionator |
5 | inherit versionator |
| 6 | |
6 | |
| 7 | # @ECLASS: kde4-functions.eclass |
7 | # @ECLASS: kde4-functions.eclass |
| 8 | # @MAINTAINER: |
8 | # @MAINTAINER: |
| … | |
… | |
| 42 | elif [[ ${KMNAME-${PN}} = kdevelop ]]; then |
42 | elif [[ ${KMNAME-${PN}} = kdevelop ]]; then |
| 43 | debug-print "${ECLASS}: KDEVELOP ebuild recognized" |
43 | debug-print "${ECLASS}: KDEVELOP ebuild recognized" |
| 44 | KDEBASE=kdevelop |
44 | KDEBASE=kdevelop |
| 45 | fi |
45 | fi |
| 46 | |
46 | |
| 47 | # @ECLASS-VARIABLE: KDE_SLOTS |
|
|
| 48 | # @DESCRIPTION: |
|
|
| 49 | # The slots used by all KDE versions later than 4.0. The live KDE releases use |
|
|
| 50 | # KDE_LIVE_SLOTS instead. Values should be ordered. |
|
|
| 51 | KDE_SLOTS=( "4.1" "4.2" "4.3" "4.4" "4.5" "4.6" ) |
|
|
| 52 | |
|
|
| 53 | # @ECLASS-VARIABLE: KDE_LIVE_SLOTS |
|
|
| 54 | # @DESCRIPTION: |
|
|
| 55 | # The slots used by KDE live versions. Values should be ordered. |
|
|
| 56 | KDE_LIVE_SLOTS=( "live" ) |
|
|
| 57 | |
|
|
| 58 | # determine the build type |
47 | # determine the build type |
| 59 | if [[ ${SLOT} = live || ${PV} = *9999* ]]; then |
48 | if [[ ${PV} = *9999* ]]; then |
| 60 | BUILD_TYPE="live" |
49 | BUILD_TYPE="live" |
| 61 | else |
50 | else |
| 62 | BUILD_TYPE="release" |
51 | BUILD_TYPE="release" |
| 63 | fi |
52 | fi |
| 64 | export BUILD_TYPE |
53 | export BUILD_TYPE |
| … | |
… | |
| 77 | ;; |
66 | ;; |
| 78 | kdebase-apps) |
67 | kdebase-apps) |
| 79 | KDE_SCM="git" |
68 | KDE_SCM="git" |
| 80 | EGIT_REPONAME=${EGIT_REPONAME:=kde-baseapps} |
69 | EGIT_REPONAME=${EGIT_REPONAME:=kde-baseapps} |
| 81 | ;; |
70 | ;; |
|
|
71 | kde-workspace|kde-runtime|kde-baseapps) |
|
|
72 | KDE_SCM="git" |
|
|
73 | ;; |
| 82 | esac |
74 | esac |
| 83 | fi |
75 | fi |
| 84 | |
76 | |
| 85 | # @ECLASS-VARIABLE: KDE_SCM |
77 | # @ECLASS-VARIABLE: KDE_SCM |
| 86 | # @DESCRIPTION: |
78 | # @DESCRIPTION: |
| … | |
… | |
| 105 | for _lingua in ${KDE_LINGUAS}; do |
97 | for _lingua in ${KDE_LINGUAS}; do |
| 106 | IUSE="${IUSE} linguas_${_lingua}" |
98 | IUSE="${IUSE} linguas_${_lingua}" |
| 107 | done |
99 | done |
| 108 | fi |
100 | fi |
| 109 | |
101 | |
| 110 | # @FUNCTION: slot_is_at_least |
|
|
| 111 | # @USAGE: <want> <have> |
|
|
| 112 | # @DESCRIPTION: |
|
|
| 113 | # Version aware slot comparator. |
|
|
| 114 | # Current implementation relies on the fact, that slots can be compared like |
|
|
| 115 | # string literals (and let's keep it this way). |
|
|
| 116 | slot_is_at_least() { |
|
|
| 117 | [[ "${2}" > "${1}" || "${2}" = "${1}" ]] |
|
|
| 118 | } |
|
|
| 119 | |
|
|
| 120 | # @FUNCTION: buildsycoca |
102 | # @FUNCTION: buildsycoca |
| 121 | # @DESCRIPTION: |
103 | # @DESCRIPTION: |
| 122 | # Function to rebuild the KDE System Configuration Cache. |
104 | # Function to rebuild the KDE System Configuration Cache. |
| 123 | # All KDE ebuilds should run this in pkg_postinst and pkg_postrm. |
105 | # All KDE ebuilds should run this in pkg_postinst and pkg_postrm. |
| 124 | buildsycoca() { |
106 | buildsycoca() { |
| 125 | debug-print-function ${FUNCNAME} "$@" |
107 | debug-print-function ${FUNCNAME} "$@" |
| 126 | |
108 | |
| 127 | # We no longer need to run kbuildsycoca4, as kded does that automatically, as needed |
109 | # We no longer need to run kbuildsycoca4, as kded does that automatically, as needed |
| 128 | |
110 | |
| 129 | # fix permission for some directories |
111 | # fix permission for some directories |
| 130 | for x in share/{config,kde4}; do |
112 | for x in usr/share/{config,kde4}; do |
| 131 | [[ ${KDEDIR} == /usr ]] && DIRS=${EROOT}usr || DIRS="${EROOT}usr ${EROOT}${KDEDIR}" |
113 | DIRS=${EROOT}usr |
| 132 | for y in ${DIRS}; do |
|
|
| 133 | [[ -d "${y}/${x}" ]] || break # nothing to do if directory does not exist |
114 | [[ -d "${EROOT}${x}" ]] || break # nothing to do if directory does not exist |
| 134 | # fixes Bug 318237 |
115 | # fixes Bug 318237 |
| 135 | if use userland_BSD ; then |
116 | if use userland_BSD ; then |
| 136 | [[ $(stat -f %p "${y}/${x}") != 40755 ]] |
117 | [[ $(stat -f %p "${EROOT}${x}") != 40755 ]] |
| 137 | local stat_rtn="$?" |
118 | local stat_rtn="$?" |
| 138 | else |
119 | else |
| 139 | [[ $(stat --format=%a "${y}/${x}") != 755 ]] |
120 | [[ $(stat --format=%a "${EROOT}${x}") != 755 ]] |
| 140 | local stat_rtn=$? |
121 | local stat_rtn=$? |
| 141 | fi |
122 | fi |
| 142 | if [[ $stat_rtn != 1 ]] ; then |
123 | if [[ $stat_rtn != 1 ]] ; then |
| 143 | ewarn "QA Notice:" |
124 | ewarn "QA Notice:" |
| 144 | ewarn "Package ${PN} is breaking ${y}/${x} permissions." |
125 | ewarn "Package ${PN} is breaking ${EROOT}${x} permissions." |
| 145 | ewarn "Please report this issue to gentoo bugzilla." |
126 | ewarn "Please report this issue to gentoo bugzilla." |
| 146 | einfo "Permissions will get adjusted automatically now." |
127 | einfo "Permissions will get adjusted automatically now." |
| 147 | find "${y}/${x}" -type d -print0 | xargs -0 chmod 755 |
128 | find "${EROOT}${x}" -type d -print0 | xargs -0 chmod 755 |
| 148 | fi |
129 | fi |
| 149 | done |
|
|
| 150 | done |
130 | done |
| 151 | } |
131 | } |
| 152 | |
132 | |
| 153 | # @FUNCTION: comment_all_add_subdirectory |
133 | # @FUNCTION: comment_all_add_subdirectory |
| 154 | # @USAGE: [list of directory names] |
134 | # @USAGE: [list of directory names] |
| … | |
… | |
| 305 | |
285 | |
| 306 | # @FUNCTION: save_library_dependencies |
286 | # @FUNCTION: save_library_dependencies |
| 307 | # @DESCRIPTION: |
287 | # @DESCRIPTION: |
| 308 | # Add exporting CMake dependencies for current package |
288 | # Add exporting CMake dependencies for current package |
| 309 | save_library_dependencies() { |
289 | save_library_dependencies() { |
| 310 | local depsfile="${T}/${PN}:${SLOT}" |
290 | local depsfile="${T}/${PN}" |
| 311 | |
291 | |
| 312 | ebegin "Saving library dependencies in ${depsfile##*/}" |
292 | ebegin "Saving library dependencies in ${depsfile##*/}" |
| 313 | echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || \ |
293 | echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || \ |
| 314 | die "Failed to save the library dependencies." |
294 | die "Failed to save the library dependencies." |
| 315 | eend $? |
295 | eend $? |
| … | |
… | |
| 317 | |
297 | |
| 318 | # @FUNCTION: install_library_dependencies |
298 | # @FUNCTION: install_library_dependencies |
| 319 | # @DESCRIPTION: |
299 | # @DESCRIPTION: |
| 320 | # Install generated CMake library dependencies to /var/lib/kde |
300 | # Install generated CMake library dependencies to /var/lib/kde |
| 321 | install_library_dependencies() { |
301 | install_library_dependencies() { |
| 322 | local depsfile="${T}/${PN}:${SLOT}" |
302 | local depsfile="${T}/${PN}" |
| 323 | |
303 | |
| 324 | ebegin "Installing library dependencies as ${depsfile##*/}" |
304 | ebegin "Installing library dependencies as ${depsfile##*/}" |
| 325 | insinto /var/lib/kde |
305 | insinto /var/lib/kde |
| 326 | doins "${depsfile}" || die "Failed to install library dependencies." |
306 | doins "${depsfile}" || die "Failed to install library dependencies." |
| 327 | eend $? |
307 | eend $? |
| … | |
… | |
| 335 | ebegin "Injecting library dependencies from '${KMLOADLIBS}'" |
315 | ebegin "Injecting library dependencies from '${KMLOADLIBS}'" |
| 336 | |
316 | |
| 337 | i=0 |
317 | i=0 |
| 338 | for pn in ${KMLOADLIBS} ; do |
318 | for pn in ${KMLOADLIBS} ; do |
| 339 | ((i++)) |
319 | ((i++)) |
| 340 | depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}" |
320 | depsfile="${EPREFIX}/var/lib/kde/${pn}" |
|
|
321 | [[ -r ${depsfile} ]] || depsfile="${EPREFIX}/var/lib/kde/${pn}:$(get_kde_version)" |
| 341 | [[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}." |
322 | [[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}." |
| 342 | sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \ |
323 | sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \ |
| 343 | die "Failed to include library dependencies for ${pn}" |
324 | die "Failed to include library dependencies for ${pn}" |
| 344 | done |
325 | done |
| 345 | eend $? |
326 | eend $? |
| 346 | } |
|
|
| 347 | |
|
|
| 348 | # @FUNCTION: block_other_slots |
|
|
| 349 | # @DESCRIPTION: |
|
|
| 350 | # Create blocks for the current package in other slots when |
|
|
| 351 | # installed with USE=-kdeprefix |
|
|
| 352 | block_other_slots() { |
|
|
| 353 | debug-print-function ${FUNCNAME} "$@" |
|
|
| 354 | |
|
|
| 355 | _do_blocker ${PN} 0:${SLOT} |
|
|
| 356 | } |
327 | } |
| 357 | |
328 | |
| 358 | # @FUNCTION: add_blocker |
329 | # @FUNCTION: add_blocker |
| 359 | # @DESCRIPTION: |
330 | # @DESCRIPTION: |
| 360 | # Create correct RDEPEND value for blocking correct package. |
331 | # Create correct RDEPEND value for blocking correct package. |
| 361 | # Useful for file-collision blocks. |
332 | # Useful for file-collision blocks. |
| 362 | # Parameters are package and version(s) to block. |
333 | # Parameters are package and version(s) to block. |
| 363 | # add_blocker kdelibs 4.2.4 |
334 | # add_blocker kdelibs 4.2.4 |
| 364 | # If no version is specified, then all versions will be blocked |
335 | # If no version is specified, then all versions will be blocked. |
| 365 | # If any arguments (from 2 on) contain a ":", then different versions |
336 | # If the version is 0, then no versions will be blocked. |
| 366 | # are blocked in different slots. (Unlisted slots get the version without |
337 | # If a second version ending in ":3.5" is passed, then the version listed for |
| 367 | # a ":", if none, then all versions are blocked). The parameter is then of |
338 | # that slot will be blocked as well. |
| 368 | # the form VERSION:SLOT. Any VERSION of 0 means that no blocker will be |
|
|
| 369 | # added for that slot (or, if no slot, then for any unlisted slot). |
|
|
| 370 | # A parameter of the form :SLOT means to block all versions from that slot. |
|
|
| 371 | # If VERSION begins with "<", then "!<foo" will be used instead of "!<=foo". |
|
|
| 372 | # As a special case, if a parameter with slot "3.5" is passed, then that slot |
|
|
| 373 | # may also be blocked. |
|
|
| 374 | # |
339 | # |
| 375 | # Versions that match "4.x.50" are equivalent to all slots up to (and including) |
340 | # Examples: |
| 376 | # "4.x", but nothing following slot "4.x" |
341 | # # Block all versions of kdelibs |
|
|
342 | # add_blocker kdelibs |
| 377 | # |
343 | # |
| 378 | # As an example, if SLOT=live, then |
344 | # # Block all versions of kdelibs older than 4.3.50 |
| 379 | # add_blocker kdelibs 0 :4.3 '<4.3.96:4.4' 9999:live |
345 | # add_blocker kdelibs 4.3.50 |
| 380 | # will add the following to RDEPEND: |
346 | # |
| 381 | # !kdeprefix? ( !kde-base/kdelibs:4.3[-kdeprefix] ) |
347 | # # Block kdelibs 3.5.10 and older, but not any version of |
| 382 | # !kdeprefix? ( !<kde-base/kdelibs-4.3.96:4.4[-kdeprefix] ) |
348 | # # kdelibs from KDE 4 |
| 383 | # !<=kde-base/kdelibs-9999:live |
349 | # add_blocker kdelibs 0 3.5.10:3.5 |
| 384 | add_blocker() { |
350 | add_blocker() { |
| 385 | debug-print-function ${FUNCNAME} "$@" |
351 | debug-print-function ${FUNCNAME} "$@" |
| 386 | |
352 | |
| 387 | RDEPEND+=" $(_do_blocker "$@")" |
353 | [[ -z ${1} ]] && die "Missing parameter" |
|
|
354 | local pkg=kde-base/$1 atom old_ver="unset" use |
|
|
355 | if [[ $pkg == *\[*\] ]]; then |
|
|
356 | use=${pkg/#*\[/[} |
|
|
357 | pkg=${pkg%\[*\]} |
|
|
358 | fi |
|
|
359 | |
|
|
360 | [[ "$3" == *:3.5 ]] && old_ver=${3%:3.5} |
|
|
361 | |
|
|
362 | # If the version passed is "0", do nothing |
|
|
363 | if [[ ${2} != 0 ]]; then |
|
|
364 | # If no version was passed, block all versions in this slot |
|
|
365 | if [[ -z ${2} ]]; then |
|
|
366 | atom=${pkg} |
|
|
367 | # If the version passed begins with a "<", then use "<" instead of "<=" |
|
|
368 | elif [[ ${2::1} == "<" ]]; then |
|
|
369 | # this also removes the first character of the version, which is a "<" |
|
|
370 | atom="<${pkg}-${2:1}" |
|
|
371 | else |
|
|
372 | atom="<=${pkg}-${2}" |
|
|
373 | fi |
|
|
374 | RDEPEND+=" !${atom}:4${use}" |
|
|
375 | fi |
|
|
376 | |
|
|
377 | # Do the same thing as above for :3.5, except that we don't want any |
|
|
378 | # output if no parameter was passed. |
|
|
379 | if [[ ${old_ver} != "unset" ]]; then |
|
|
380 | if [[ -z ${old_ver} ]]; then |
|
|
381 | atom=${pkg} |
|
|
382 | elif [[ ${old_ver::1} == "<" ]]; then |
|
|
383 | atom="<${pkg}-${old_ver:1}" |
|
|
384 | else |
|
|
385 | atom="<=${pkg}-${old_ver}" |
|
|
386 | fi |
|
|
387 | RDEPEND+=" !${atom}:3.5${use}" |
|
|
388 | fi |
| 388 | } |
389 | } |
| 389 | |
390 | |
| 390 | # @FUNCTION: add_kdebase_dep |
391 | # @FUNCTION: add_kdebase_dep |
| 391 | # @DESCRIPTION: |
392 | # @DESCRIPTION: |
| 392 | # Create proper dependency for kde-base/ dependencies, adding SLOT when needed |
393 | # Create proper dependency for kde-base/ dependencies. |
| 393 | # (and *only* when needed). |
|
|
| 394 | # This takes 1 to 3 arguments. The first being the package name, the optional |
394 | # This takes 1 to 3 arguments. The first being the package name, the optional |
| 395 | # second is additional USE flags to append, and the optional third is the |
395 | # second is additional USE flags to append, and the optional third is the |
| 396 | # version to use instead of the automatic version (use sparingly). |
396 | # version to use instead of the automatic version (use sparingly). |
| 397 | # The output of this should be added directly to DEPEND/RDEPEND, and may be |
397 | # The output of this should be added directly to DEPEND/RDEPEND, and may be |
| 398 | # wrapped in a USE conditional (but not an || conditional without an extra set |
398 | # wrapped in a USE conditional (but not an || conditional without an extra set |
| … | |
… | |
| 406 | ver=${3} |
406 | ver=${3} |
| 407 | elif [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then |
407 | elif [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then |
| 408 | ver=${KDE_OVERRIDE_MINIMAL} |
408 | ver=${KDE_OVERRIDE_MINIMAL} |
| 409 | elif [[ ${KDEBASE} != kde-base ]]; then |
409 | elif [[ ${KDEBASE} != kde-base ]]; then |
| 410 | ver=${KDE_MINIMAL} |
410 | ver=${KDE_MINIMAL} |
| 411 | # FIXME remove hack when kdepim-4.4.* is gone |
|
|
| 412 | elif [[ ( ${KMNAME} == kdepim || ${PN} == kdepim-runtime ) && ${SLOT} == 4.4 && ${1} =~ ^(kde(pim)?libs|oxygen-icons)$ ]]; then |
|
|
| 413 | ver=4.4.5 |
|
|
| 414 | # FIXME remove hack when kdepim-4.6beta is gone |
|
|
| 415 | elif [[ ( ${KMNAME} == kdepim || ${PN} == kdepim-runtime ) && ${PV} == 4.5.98 && ${1} =~ ^(kde(pim)?libs|oxygen-icons)$ ]]; then |
|
|
| 416 | ver=4.5.90 |
|
|
| 417 | # if building stable-live version depend just on slot |
411 | # if building stable-live version depend just on the raw KDE version |
| 418 | # to allow merging packages against more stable basic stuff |
412 | # to allow merging packages against more stable basic stuff |
| 419 | elif [[ ${PV} == *.9999 ]]; then |
413 | elif [[ ${PV} == *.9999 ]]; then |
| 420 | ver=${SLOT} |
414 | ver=$(get_kde_version) |
| 421 | else |
415 | else |
| 422 | ver=${PV} |
416 | ver=${PV} |
| 423 | fi |
417 | fi |
| 424 | |
418 | |
| 425 | [[ -z ${1} ]] && die "Missing parameter" |
419 | [[ -z ${1} ]] && die "Missing parameter" |
| 426 | |
420 | |
| 427 | local use=${2:+,${2}} |
|
|
| 428 | |
|
|
| 429 | if [[ ${KDEBASE} = kde-base ]]; then |
|
|
| 430 | echo " !kdeprefix? ( >=kde-base/${1}-${ver}[aqua=,-kdeprefix${use}] )" |
|
|
| 431 | echo " kdeprefix? ( >=kde-base/${1}-${ver}:${SLOT}[aqua=,kdeprefix${use}] )" |
|
|
| 432 | elif [[ ${ver} == live ]]; then |
|
|
| 433 | echo " kde-base/${1}:live[aqua=${use}]" |
|
|
| 434 | else |
|
|
| 435 | echo " >=kde-base/${1}-${ver}[aqua=${use}]" |
421 | echo " >=kde-base/${1}-${ver}:4[aqua=${2:+,${2}}]" |
| 436 | fi |
|
|
| 437 | } |
|
|
| 438 | |
|
|
| 439 | # _greater_max_in_slot ver slot |
|
|
| 440 | # slot must be 4.x or live |
|
|
| 441 | # returns true if ver is >= the maximum possibile version in slot |
|
|
| 442 | _greater_max_in_slot() { |
|
|
| 443 | local ver=$1 |
|
|
| 444 | local slot=$2 |
|
|
| 445 | # If slot is live, then return false |
|
|
| 446 | # (nothing is greater than the maximum live version) |
|
|
| 447 | [[ $slot == live ]] && return 1 |
|
|
| 448 | # Otherwise, for slot X.Y, test against X.Y.50 |
|
|
| 449 | local test=${slot}.50 |
|
|
| 450 | version_compare $1 ${test} |
|
|
| 451 | # 1 = '<', 2 = '=', 3 = '>' |
|
|
| 452 | (( $? != 1 )) |
|
|
| 453 | } |
|
|
| 454 | |
|
|
| 455 | # _less_min_in_slot ver slot |
|
|
| 456 | # slot must be 4.x or live |
|
|
| 457 | # returns true if ver is <= the minimum possibile version in slot |
|
|
| 458 | _less_min_in_slot() { |
|
|
| 459 | local ver=$1 |
|
|
| 460 | local slot=$2 |
|
|
| 461 | # If slot == live, then test with "9999_pre", so that 9999 tests false |
|
|
| 462 | local test=9999_pre |
|
|
| 463 | # If slot == X.Y, then test with X.(Y-1).50 |
|
|
| 464 | [[ $slot != live ]] && test=${slot%.*}.$((${slot#*.} - 1)).50 |
|
|
| 465 | version_compare $1 ${test} |
|
|
| 466 | # 1 = '<', 2 = '=', 3 = '>' |
|
|
| 467 | (( $? != 3 )) |
|
|
| 468 | } |
|
|
| 469 | |
|
|
| 470 | # Internal function used for add_blocker and block_other_slots |
|
|
| 471 | # This takes the same parameters as add_blocker, but echos to |
|
|
| 472 | # stdout instead of updating a variable. |
|
|
| 473 | _do_blocker() { |
|
|
| 474 | debug-print-function ${FUNCNAME} "$@" |
|
|
| 475 | |
|
|
| 476 | [[ -z ${1} ]] && die "Missing parameter" |
|
|
| 477 | local pkg=kde-base/$1 use |
|
|
| 478 | shift |
|
|
| 479 | if [[ $pkg == *\[*\] ]]; then |
|
|
| 480 | use=${pkg#*\[} |
|
|
| 481 | use=${use%\]} |
|
|
| 482 | pkg=${pkg%\[*\]} |
|
|
| 483 | fi |
|
|
| 484 | |
|
|
| 485 | local param slot def="unset" var atom |
|
|
| 486 | # The following variables will hold parameters that contain ":" |
|
|
| 487 | # - block_3_5 |
|
|
| 488 | # - block_4_1 |
|
|
| 489 | # - block_4_2 |
|
|
| 490 | # - block_4_3 |
|
|
| 491 | # - block_4_4 |
|
|
| 492 | # - block_live |
|
|
| 493 | for slot in 3.5 ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do |
|
|
| 494 | local block_${slot//./_}="unset" |
|
|
| 495 | done |
|
|
| 496 | |
|
|
| 497 | # This construct goes through each parameter passed, and sets |
|
|
| 498 | # either def or block_* to the version passed |
|
|
| 499 | for param; do |
|
|
| 500 | # If the parameter does not have a ":" in it... |
|
|
| 501 | if [[ ${param/:} == ${param} ]]; then |
|
|
| 502 | def=${param} |
|
|
| 503 | else # the parameter *does* have a ":" in it |
|
|
| 504 | # so everything after the : is the slot... |
|
|
| 505 | slot=${param#*:} |
|
|
| 506 | # ...and everything before the : is the version |
|
|
| 507 | local block_${slot//./_}=${param%:*} |
|
|
| 508 | fi |
|
|
| 509 | done |
|
|
| 510 | |
|
|
| 511 | for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do |
|
|
| 512 | # ${var} contains the name of the variable we care about for this slot |
|
|
| 513 | # ${!var} is it's value |
|
|
| 514 | var=block_${slot//./_} |
|
|
| 515 | # if we didn't pass *:${slot}, then use the unsloted value |
|
|
| 516 | [[ ${!var} == "unset" ]] && var=def |
|
|
| 517 | |
|
|
| 518 | # If no version was passed, or the version is greater than the maximum |
|
|
| 519 | # possible version in this slot, block all versions in this slot |
|
|
| 520 | if [[ ${!var} == "unset" ]] || [[ -z ${!var} ]] || _greater_max_in_slot ${!var#<} ${slot}; then |
|
|
| 521 | atom=${pkg} |
|
|
| 522 | # If the version is "0" or less than the minimum possible version in |
|
|
| 523 | # this slot, do nothing |
|
|
| 524 | elif [[ ${!var} == "0" ]] || _less_min_in_slot ${!var#<} ${slot}; then |
|
|
| 525 | continue |
|
|
| 526 | # If the version passed begins with a "<", then use "<" instead of "<=" |
|
|
| 527 | elif [[ ${!var:0:1} == "<" ]]; then |
|
|
| 528 | # this also removes the first character of the version, which is a "<" |
|
|
| 529 | atom="<${pkg}-${!var:1}" |
|
|
| 530 | else |
|
|
| 531 | atom="<=${pkg}-${!var}" |
|
|
| 532 | fi |
|
|
| 533 | # we always block our own slot, ignoring kdeprefix |
|
|
| 534 | if [[ ${SLOT} == ${slot} ]]; then |
|
|
| 535 | echo " !${atom}:${slot}${use:+[${use}]}" |
|
|
| 536 | else |
|
|
| 537 | # we only block other slots on -kdeprefix |
|
|
| 538 | echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix${use:+,${use}}] )" |
|
|
| 539 | fi |
|
|
| 540 | done |
|
|
| 541 | |
|
|
| 542 | # This is a special case block for :3.5; it does not use the |
|
|
| 543 | # default version passed, and no blocker is output *unless* a version |
|
|
| 544 | # is passed, or ":3.5" is passed to explicitly request a block on all |
|
|
| 545 | # 3.5 versions. |
|
|
| 546 | if [[ ${block_3_5} != "unset" && ${block_3_5} != "0" ]]; then |
|
|
| 547 | if [[ -z ${block_3_5} ]]; then |
|
|
| 548 | atom=${pkg} |
|
|
| 549 | elif [[ ${block_3_5:0:1} == "<" ]]; then |
|
|
| 550 | atom="<${pkg}-${block_3_5:1}" |
|
|
| 551 | else |
|
|
| 552 | atom="<=${pkg}-${block_3_5}" |
|
|
| 553 | fi |
|
|
| 554 | echo " !${atom}:3.5${use:+[${use}]}" |
|
|
| 555 | fi |
|
|
| 556 | } |
422 | } |
| 557 | |
423 | |
| 558 | # local function to enable specified translations for specified directory |
424 | # local function to enable specified translations for specified directory |
| 559 | # used from kde4-functions_enable_selected_linguas function |
425 | # used from kde4-functions_enable_selected_linguas function |
| 560 | _enable_selected_linguas_dir() { |
426 | _enable_selected_linguas_dir() { |
| … | |
… | |
| 603 | [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}" |
469 | [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}" |
| 604 | |
470 | |
| 605 | popd > /dev/null |
471 | popd > /dev/null |
| 606 | } |
472 | } |
| 607 | |
473 | |
| 608 | _calculate_kde_slot() { |
474 | # @FUNCTION: get_kde_version |
|
|
475 | # Translates an ebuild version into a major.minor KDE SC |
|
|
476 | # release version. If no version is specified, ${PV} is used. |
|
|
477 | get_kde_version() { |
| 609 | local ver=${1:-${PV}} |
478 | local ver=${1:-${PV}} |
| 610 | local major=$(get_major_version ${ver}) |
479 | local major=$(get_major_version ${ver}) |
| 611 | local minor=$(get_version_component_range 2 ${ver}) |
480 | local minor=$(get_version_component_range 2 ${ver}) |
| 612 | local micro=$(get_version_component_range 3 ${ver}) |
481 | local micro=$(get_version_component_range 3 ${ver}) |
| 613 | [[ ${ver} == 9999 ]] && echo live |
482 | if [[ ${ver} == 9999 ]]; then |
| 614 | (( major == 4 && micro == 9999 )) && echo ${major}.${minor} |
483 | echo live |
| 615 | if (( major == 4 && micro != 9999 )); then |
484 | else |
| 616 | (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1)) |
485 | (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1)) |
| 617 | fi |
486 | fi |
| 618 | } |
487 | } |