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

Diff of /eclass/kde4-functions.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.48 Revision 1.62
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-functions.eclass,v 1.48 2011/05/24 20:54:58 abcd Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.62 2012/09/27 16:35:41 axs Exp $
4 4
5inherit versionator 5inherit versionator
6 6
7# @ECLASS: kde4-functions.eclass 7# @ECLASS: kde4-functions.eclass
8# @MAINTAINER: 8# @MAINTAINER:
14 14
15# @ECLASS-VARIABLE: EAPI 15# @ECLASS-VARIABLE: EAPI
16# @DESCRIPTION: 16# @DESCRIPTION:
17# Currently kde4 eclasses support EAPI 3 and 4. 17# Currently kde4 eclasses support EAPI 3 and 4.
18case ${EAPI:-0} in 18case ${EAPI:-0} in
19 4|3) : ;; 19 3|4|5) : ;;
20 *) die "EAPI=${EAPI} is not supported" ;; 20 *) die "EAPI=${EAPI} is not supported" ;;
21esac 21esac
22 22
23# @ECLASS-VARIABLE: KDE_OVERRIDE_MINIMAL 23# @ECLASS-VARIABLE: KDE_OVERRIDE_MINIMAL
24# @DESCRIPTION: 24# @DESCRIPTION:
30# Warning- may lead to general instability and kill your pet targh. 30# Warning- may lead to general instability and kill your pet targh.
31 31
32# @ECLASS-VARIABLE: KDEBASE 32# @ECLASS-VARIABLE: KDEBASE
33# @DESCRIPTION: 33# @DESCRIPTION:
34# This gets set to a non-zero value when a package is considered a kde or 34# This gets set to a non-zero value when a package is considered a kde or
35# koffice ebuild. 35# kdevelop ebuild.
36if [[ ${CATEGORY} = kde-base ]]; then 36if [[ ${CATEGORY} = kde-base ]]; then
37 debug-print "${ECLASS}: KDEBASE ebuild recognized" 37 debug-print "${ECLASS}: KDEBASE ebuild recognized"
38 KDEBASE=kde-base 38 KDEBASE=kde-base
39elif [[ ${KMNAME-${PN}} = koffice ]]; then
40 debug-print "${ECLASS}: KOFFICE ebuild recognized"
41 KDEBASE=koffice
42elif [[ ${KMNAME-${PN}} = kdevelop ]]; then 39elif [[ ${KMNAME-${PN}} = kdevelop ]]; then
43 debug-print "${ECLASS}: KDEVELOP ebuild recognized" 40 debug-print "${ECLASS}: KDEVELOP ebuild recognized"
44 KDEBASE=kdevelop 41 KDEBASE=kdevelop
45fi 42fi
46 43
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.
51KDE_SLOTS=( "4.1" "4.2" "4.3" "4.4" "4.5" "4.6" "4.7" )
52
53# @ECLASS-VARIABLE: KDE_LIVE_SLOTS
54# @DESCRIPTION:
55# The slots used by KDE live versions. Values should be ordered.
56KDE_LIVE_SLOTS=( "live" )
57
58# determine the build type 44# determine the build type
59if [[ ${SLOT} = live || ${PV} = *9999* ]]; then 45if [[ ${PV} = *9999* ]]; then
60 BUILD_TYPE="live" 46 KDE_BUILD_TYPE="live"
61else 47else
62 BUILD_TYPE="release" 48 KDE_BUILD_TYPE="release"
63fi 49fi
64export BUILD_TYPE 50export KDE_BUILD_TYPE
65 51
66# Set reponame and SCM for moduleses that have fully migrated to git 52# Set reponame and SCM for modules that have fully migrated to git
67# (hack - it's here because it needs to be before SCM inherits from kde4-base) 53# (hack - it's here because it needs to be before SCM inherits from kde4-base)
68if [[ ${BUILD_TYPE} == live ]]; then 54if [[ ${KDE_BUILD_TYPE} == live ]]; then
69 case "${KMNAME}" in 55 case "${KMNAME}" in
70 kdebase-workspace) 56 kdebase-workspace)
71 KDE_SCM="git" 57 KDE_SCM="git"
72 EGIT_REPONAME=${EGIT_REPONAME:=kde-workspace} 58 EGIT_REPONAME=${EGIT_REPONAME:=kde-workspace}
73 ;; 59 ;;
77 ;; 63 ;;
78 kdebase-apps) 64 kdebase-apps)
79 KDE_SCM="git" 65 KDE_SCM="git"
80 EGIT_REPONAME=${EGIT_REPONAME:=kde-baseapps} 66 EGIT_REPONAME=${EGIT_REPONAME:=kde-baseapps}
81 ;; 67 ;;
68 kde-workspace|kde-runtime|kde-baseapps)
69 KDE_SCM="git"
70 ;;
82 esac 71 esac
83fi 72fi
84 73
85# @ECLASS-VARIABLE: KDE_SCM 74# @ECLASS-VARIABLE: KDE_SCM
86# @DESCRIPTION: 75# @DESCRIPTION:
98# These translations are automatically added to IUSE. Therefore ebuilds must set 87# These translations are automatically added to IUSE. Therefore ebuilds must set
99# this variable before inheriting any eclasses. To enable only selected 88# this variable before inheriting any eclasses. To enable only selected
100# translations, ebuilds must call enable_selected_linguas(). kde4-{base,meta}.eclass does 89# translations, ebuilds must call enable_selected_linguas(). kde4-{base,meta}.eclass does
101# this for you. 90# this for you.
102# 91#
103# Example: KDE_LINGUAS="en_GB de nl" 92# Example: KDE_LINGUAS="de en_GB nl"
104if [[ ${BUILD_TYPE} != live || -n ${KDE_LINGUAS_LIVE_OVERRIDE} ]]; then 93if [[ ${KDE_BUILD_TYPE} != live || -n ${KDE_LINGUAS_LIVE_OVERRIDE} ]]; then
105 for _lingua in ${KDE_LINGUAS}; do 94 for _lingua in ${KDE_LINGUAS}; do
106 IUSE="${IUSE} linguas_${_lingua}" 95 IUSE="${IUSE} linguas_${_lingua}"
107 done 96 done
108fi 97fi
109
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).
116slot_is_at_least() {
117 [[ "${2}" > "${1}" || "${2}" = "${1}" ]]
118}
119 98
120# @FUNCTION: buildsycoca 99# @FUNCTION: buildsycoca
121# @DESCRIPTION: 100# @DESCRIPTION:
122# Function to rebuild the KDE System Configuration Cache. 101# Function to rebuild the KDE System Configuration Cache.
123# All KDE ebuilds should run this in pkg_postinst and pkg_postrm. 102# All KDE ebuilds should run this in pkg_postinst and pkg_postrm.
125 debug-print-function ${FUNCNAME} "$@" 104 debug-print-function ${FUNCNAME} "$@"
126 105
127 # We no longer need to run kbuildsycoca4, as kded does that automatically, as needed 106 # We no longer need to run kbuildsycoca4, as kded does that automatically, as needed
128 107
129 # fix permission for some directories 108 # fix permission for some directories
130 for x in share/{config,kde4}; do 109 for x in usr/share/{config,kde4}; do
131 [[ ${KDEDIR} == /usr ]] && DIRS=${EROOT}usr || DIRS="${EROOT}usr ${EROOT}${KDEDIR}" 110 DIRS=${EROOT}usr
132 for y in ${DIRS}; do
133 [[ -d "${y}/${x}" ]] || break # nothing to do if directory does not exist 111 [[ -d "${EROOT}${x}" ]] || break # nothing to do if directory does not exist
134 # fixes Bug 318237 112 # fixes Bug 318237
135 if use userland_BSD ; then 113 if use userland_BSD ; then
136 [[ $(stat -f %p "${y}/${x}") != 40755 ]] 114 [[ $(stat -f %p "${EROOT}${x}") != 40755 ]]
137 local stat_rtn="$?" 115 local stat_rtn="$?"
138 else 116 else
139 [[ $(stat --format=%a "${y}/${x}") != 755 ]] 117 [[ $(stat --format=%a "${EROOT}${x}") != 755 ]]
140 local stat_rtn=$? 118 local stat_rtn=$?
141 fi 119 fi
142 if [[ $stat_rtn != 1 ]] ; then 120 if [[ $stat_rtn != 1 ]] ; then
143 ewarn "QA Notice:" 121 ewarn "QA Notice:"
144 ewarn "Package ${PN} is breaking ${y}/${x} permissions." 122 ewarn "Package ${PN} is breaking ${EROOT}${x} permissions."
145 ewarn "Please report this issue to gentoo bugzilla." 123 ewarn "Please report this issue to gentoo bugzilla."
146 einfo "Permissions will get adjusted automatically now." 124 einfo "Permissions will get adjusted automatically now."
147 find "${y}/${x}" -type d -print0 | xargs -0 chmod 755 125 find "${EROOT}${x}" -type d -print0 | xargs -0 chmod 755
148 fi 126 fi
149 done
150 done 127 done
151} 128}
152 129
153# @FUNCTION: comment_all_add_subdirectory 130# @FUNCTION: comment_all_add_subdirectory
154# @USAGE: [list of directory names] 131# @USAGE: [list of directory names]
201# @DESCRIPTION: 178# @DESCRIPTION:
202# Enable only selected linguas enabled doc folders. 179# Enable only selected linguas enabled doc folders.
203enable_selected_doc_linguas() { 180enable_selected_doc_linguas() {
204 debug-print-function ${FUNCNAME} "$@" 181 debug-print-function ${FUNCNAME} "$@"
205 182
206 # if there is no linguas defined we enable everything
207 if ! $(env | grep -q "^LINGUAS="); then
208 return 0
209 fi
210
211 # @ECLASS-VARIABLE: KDE_DOC_DIRS 183 # @ECLASS-VARIABLE: KDE_DOC_DIRS
212 # @DESCRIPTION: 184 # @DESCRIPTION:
213 # Variable specifying whitespace separated patterns for documentation locations. 185 # Variable specifying whitespace separated patterns for documentation locations.
214 # Default is "doc/%lingua" 186 # Default is "doc/%lingua"
215 KDE_DOC_DIRS=${KDE_DOC_DIRS:='doc/%lingua'} 187 KDE_DOC_DIRS=${KDE_DOC_DIRS:='doc/%lingua'}
226 # Disable whole directory 198 # Disable whole directory
227 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \ 199 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
228 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \ 200 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
229 -i CMakeLists.txt || die 'failed to comment out all handbooks' 201 -i CMakeLists.txt || die 'failed to comment out all handbooks'
230 else 202 else
203 # if there is no linguas defined we enable everything (i.e. comment out nothing)
204 if ! $(env | grep -q "^LINGUAS="); then
205 return 0
206 fi
207
231 # Disable subdirectories recursively 208 # Disable subdirectories recursively
232 comment_all_add_subdirectory "${handbookdir}" 209 comment_all_add_subdirectory "${handbookdir}"
233 # Add requested translations 210 # Add requested translations
234 local lingua 211 local lingua
235 for lingua in en ${KDE_LINGUAS}; do 212 for lingua in en ${KDE_LINGUAS}; do
280 mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'" 257 mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'"
281 done 258 done
282 rmdir "${cleandir}" || die "Could not move obsolete KDE store dir. Please move '${cleandir}' contents to appropriate location (possibly ${ESVN_STORE_DIR}) and manually remove '${cleandir}' in order to continue." 259 rmdir "${cleandir}" || die "Could not move obsolete KDE store dir. Please move '${cleandir}' contents to appropriate location (possibly ${ESVN_STORE_DIR}) and manually remove '${cleandir}' in order to continue."
283 fi 260 fi
284 261
285 if ! hasq kde4-meta ${INHERITED}; then 262 if ! has kde4-meta ${INHERITED}; then
286 case ${KMNAME} in 263 case ${KMNAME} in
287 extragear*|playground*) 264 extragear*|playground*)
288 local scmlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}" 265 local scmlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}"
289 if [[ -d "${scmlocalpath}" ]]; then 266 if [[ -d "${scmlocalpath}" ]]; then
290 local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`" 267 local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`"
305 282
306# @FUNCTION: save_library_dependencies 283# @FUNCTION: save_library_dependencies
307# @DESCRIPTION: 284# @DESCRIPTION:
308# Add exporting CMake dependencies for current package 285# Add exporting CMake dependencies for current package
309save_library_dependencies() { 286save_library_dependencies() {
310 local depsfile="${T}/${PN}:${SLOT}" 287 local depsfile="${T}/${PN}"
311 288
312 ebegin "Saving library dependencies in ${depsfile##*/}" 289 ebegin "Saving library dependencies in ${depsfile##*/}"
313 echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || \ 290 echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || \
314 die "Failed to save the library dependencies." 291 die "Failed to save the library dependencies."
315 eend $? 292 eend $?
317 294
318# @FUNCTION: install_library_dependencies 295# @FUNCTION: install_library_dependencies
319# @DESCRIPTION: 296# @DESCRIPTION:
320# Install generated CMake library dependencies to /var/lib/kde 297# Install generated CMake library dependencies to /var/lib/kde
321install_library_dependencies() { 298install_library_dependencies() {
322 local depsfile="${T}/${PN}:${SLOT}" 299 local depsfile="${T}/${PN}"
323 300
324 ebegin "Installing library dependencies as ${depsfile##*/}" 301 ebegin "Installing library dependencies as ${depsfile##*/}"
325 insinto /var/lib/kde 302 insinto /var/lib/kde
326 doins "${depsfile}" || die "Failed to install library dependencies." 303 doins "${depsfile}" || die "Failed to install library dependencies."
327 eend $? 304 eend $?
335 ebegin "Injecting library dependencies from '${KMLOADLIBS}'" 312 ebegin "Injecting library dependencies from '${KMLOADLIBS}'"
336 313
337 i=0 314 i=0
338 for pn in ${KMLOADLIBS} ; do 315 for pn in ${KMLOADLIBS} ; do
339 ((i++)) 316 ((i++))
340 depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}" 317 depsfile="${EPREFIX}/var/lib/kde/${pn}"
318 [[ -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}." 319 [[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}."
342 sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \ 320 sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \
343 die "Failed to include library dependencies for ${pn}" 321 die "Failed to include library dependencies for ${pn}"
344 done 322 done
345 eend $? 323 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
352block_other_slots() {
353 debug-print-function ${FUNCNAME} "$@"
354
355 _do_blocker ${PN} 0:${SLOT}
356} 324}
357 325
358# @FUNCTION: add_blocker 326# @FUNCTION: add_blocker
359# @DESCRIPTION: 327# @DESCRIPTION:
360# Create correct RDEPEND value for blocking correct package. 328# Create correct RDEPEND value for blocking correct package.
361# Useful for file-collision blocks. 329# Useful for file-collision blocks.
362# Parameters are package and version(s) to block. 330# Parameters are package and version(s) to block.
363# add_blocker kdelibs 4.2.4 331# add_blocker kdelibs 4.2.4
364# If no version is specified, then all versions will be blocked 332# If no version is specified, then all versions will be blocked.
365# If any arguments (from 2 on) contain a ":", then different versions 333# If the version is 0, then no versions will be blocked.
366# are blocked in different slots. (Unlisted slots get the version without 334# 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 335# 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# 336#
375# Versions that match "4.x.50" are equivalent to all slots up to (and including) 337# Examples:
376# "4.x", but nothing following slot "4.x" 338# # Block all versions of kdelibs
339# add_blocker kdelibs
377# 340#
378# As an example, if SLOT=live, then 341# # Block all versions of kdelibs older than 4.3.50
379# add_blocker kdelibs 0 :4.3 '<4.3.96:4.4' 9999:live 342# add_blocker kdelibs 4.3.50
380# will add the following to RDEPEND: 343#
381# !kdeprefix? ( !kde-base/kdelibs:4.3[-kdeprefix] ) 344# # Block kdelibs 3.5.10 and older, but not any version of
382# !kdeprefix? ( !<kde-base/kdelibs-4.3.96:4.4[-kdeprefix] ) 345# # kdelibs from KDE 4
383# !<=kde-base/kdelibs-9999:live 346# add_blocker kdelibs 0 3.5.10:3.5
384add_blocker() { 347add_blocker() {
385 debug-print-function ${FUNCNAME} "$@" 348 debug-print-function ${FUNCNAME} "$@"
386 349
387 RDEPEND+=" $(_do_blocker "$@")" 350 [[ -z ${1} ]] && die "Missing parameter"
351 local pkg=kde-base/$1 atom old_ver="unset" use
352 if [[ $pkg == *\[*\] ]]; then
353 use=${pkg/#*\[/[}
354 pkg=${pkg%\[*\]}
355 fi
356
357 [[ "$3" == *:3.5 ]] && old_ver=${3%:3.5}
358
359 # If the version passed is "0", do nothing
360 if [[ ${2} != 0 ]]; then
361 # If no version was passed, block all versions in this slot
362 if [[ -z ${2} ]]; then
363 atom=${pkg}
364 # If the version passed begins with a "<", then use "<" instead of "<="
365 elif [[ ${2::1} == "<" ]]; then
366 # this also removes the first character of the version, which is a "<"
367 atom="<${pkg}-${2:1}"
368 else
369 atom="<=${pkg}-${2}"
370 fi
371 RDEPEND+=" !${atom}:4${use}"
372 fi
373
374 # Do the same thing as above for :3.5, except that we don't want any
375 # output if no parameter was passed.
376 if [[ ${old_ver} != "unset" ]]; then
377 if [[ -z ${old_ver} ]]; then
378 atom=${pkg}
379 elif [[ ${old_ver::1} == "<" ]]; then
380 atom="<${pkg}-${old_ver:1}"
381 else
382 atom="<=${pkg}-${old_ver}"
383 fi
384 RDEPEND+=" !${atom}:3.5${use}"
385 fi
388} 386}
389 387
390# @FUNCTION: add_kdebase_dep 388# @FUNCTION: add_kdebase_dep
391# @DESCRIPTION: 389# @DESCRIPTION:
392# Create proper dependency for kde-base/ dependencies, adding SLOT when needed 390# 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 391# 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 392# second is additional USE flags to append, and the optional third is the
396# version to use instead of the automatic version (use sparingly). 393# 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 394# 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 395# wrapped in a USE conditional (but not an || conditional without an extra set
406 ver=${3} 403 ver=${3}
407 elif [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then 404 elif [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then
408 ver=${KDE_OVERRIDE_MINIMAL} 405 ver=${KDE_OVERRIDE_MINIMAL}
409 elif [[ ${KDEBASE} != kde-base ]]; then 406 elif [[ ${KDEBASE} != kde-base ]]; then
410 ver=${KDE_MINIMAL} 407 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 408 # if building stable-live version depend just on the raw KDE version
418 # to allow merging packages against more stable basic stuff 409 # to allow merging packages against more stable basic stuff
419 elif [[ ${PV} == *.9999 ]]; then 410 elif [[ ${PV} == *.9999 ]]; then
420 ver=${SLOT} 411 ver=$(get_kde_version)
421 else 412 else
422 ver=${PV} 413 ver=${PV}
423 fi 414 fi
424 415
425 [[ -z ${1} ]] && die "Missing parameter" 416 [[ -z ${1} ]] && die "Missing parameter"
426 417
427 local use=${2:+,${2}}
428
429 if [[ ${KDEBASE} = kde-base ]]; then
430 echo " !kdeprefix? ( >=kde-base/${1}-${ver}[aqua=,-kdeprefix${use}] )"
431 # kdeprefix is no-go for kdepim 4.4
432 [[ ( ${KMNAME} == kdepim || ${PN} == kdepim-runtime ) && ${SLOT} == 4.4 ]] || \
433 echo " kdeprefix? ( >=kde-base/${1}-${ver}:${SLOT}[aqua=,kdeprefix${use}] )"
434 elif [[ ${ver} == live ]]; then
435 echo " kde-base/${1}:live[aqua=${use}]"
436 else
437 echo " >=kde-base/${1}-${ver}[aqua=${use}]" 418 echo " >=kde-base/${1}-${ver}:4[aqua=${2:+,${2}}]"
438 fi
439}
440
441# _greater_max_in_slot ver slot
442# slot must be 4.x or live
443# returns true if ver is >= the maximum possibile version in slot
444_greater_max_in_slot() {
445 local ver=$1
446 local slot=$2
447 # If slot is live, then return false
448 # (nothing is greater than the maximum live version)
449 [[ $slot == live ]] && return 1
450 # Otherwise, for slot X.Y, test against X.Y.50
451 local test=${slot}.50
452 version_compare $1 ${test}
453 # 1 = '<', 2 = '=', 3 = '>'
454 (( $? != 1 ))
455}
456
457# _less_min_in_slot ver slot
458# slot must be 4.x or live
459# returns true if ver is <= the minimum possibile version in slot
460_less_min_in_slot() {
461 local ver=$1
462 local slot=$2
463 # If slot == live, then test with "9999_pre", so that 9999 tests false
464 local test=9999_pre
465 # If slot == X.Y, then test with X.(Y-1).50
466 [[ $slot != live ]] && test=${slot%.*}.$((${slot#*.} - 1)).50
467 version_compare $1 ${test}
468 # 1 = '<', 2 = '=', 3 = '>'
469 (( $? != 3 ))
470}
471
472# Internal function used for add_blocker and block_other_slots
473# This takes the same parameters as add_blocker, but echos to
474# stdout instead of updating a variable.
475_do_blocker() {
476 debug-print-function ${FUNCNAME} "$@"
477
478 [[ -z ${1} ]] && die "Missing parameter"
479 local pkg=kde-base/$1 use
480 shift
481 if [[ $pkg == *\[*\] ]]; then
482 use=${pkg#*\[}
483 use=${use%\]}
484 pkg=${pkg%\[*\]}
485 fi
486
487 local param slot def="unset" var atom
488 # The following variables will hold parameters that contain ":"
489 # - block_3_5
490 # - block_4_1
491 # - block_4_2
492 # - block_4_3
493 # - block_4_4
494 # - block_live
495 for slot in 3.5 ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
496 local block_${slot//./_}="unset"
497 done
498
499 # This construct goes through each parameter passed, and sets
500 # either def or block_* to the version passed
501 for param; do
502 # If the parameter does not have a ":" in it...
503 if [[ ${param/:} == ${param} ]]; then
504 def=${param}
505 else # the parameter *does* have a ":" in it
506 # so everything after the : is the slot...
507 slot=${param#*:}
508 # ...and everything before the : is the version
509 local block_${slot//./_}=${param%:*}
510 fi
511 done
512
513 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
514 # ${var} contains the name of the variable we care about for this slot
515 # ${!var} is it's value
516 var=block_${slot//./_}
517 # if we didn't pass *:${slot}, then use the unsloted value
518 [[ ${!var} == "unset" ]] && var=def
519
520 # If no version was passed, or the version is greater than the maximum
521 # possible version in this slot, block all versions in this slot
522 if [[ ${!var} == "unset" ]] || [[ -z ${!var} ]] || _greater_max_in_slot ${!var#<} ${slot}; then
523 atom=${pkg}
524 # If the version is "0" or less than the minimum possible version in
525 # this slot, do nothing
526 elif [[ ${!var} == "0" ]] || _less_min_in_slot ${!var#<} ${slot}; then
527 continue
528 # If the version passed begins with a "<", then use "<" instead of "<="
529 elif [[ ${!var:0:1} == "<" ]]; then
530 # this also removes the first character of the version, which is a "<"
531 atom="<${pkg}-${!var:1}"
532 else
533 atom="<=${pkg}-${!var}"
534 fi
535 # we always block our own slot, ignoring kdeprefix
536 if [[ ${SLOT} == ${slot} ]]; then
537 echo " !${atom}:${slot}${use:+[${use}]}"
538 else
539 # we only block other slots on -kdeprefix
540 echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix${use:+,${use}}] )"
541 fi
542 done
543
544 # This is a special case block for :3.5; it does not use the
545 # default version passed, and no blocker is output *unless* a version
546 # is passed, or ":3.5" is passed to explicitly request a block on all
547 # 3.5 versions.
548 if [[ ${block_3_5} != "unset" && ${block_3_5} != "0" ]]; then
549 if [[ -z ${block_3_5} ]]; then
550 atom=${pkg}
551 elif [[ ${block_3_5:0:1} == "<" ]]; then
552 atom="<${pkg}-${block_3_5:1}"
553 else
554 atom="<=${pkg}-${block_3_5}"
555 fi
556 echo " !${atom}:3.5${use:+[${use}]}"
557 fi
558} 419}
559 420
560# local function to enable specified translations for specified directory 421# local function to enable specified translations for specified directory
561# used from kde4-functions_enable_selected_linguas function 422# used from kde4-functions_enable_selected_linguas function
562_enable_selected_linguas_dir() { 423_enable_selected_linguas_dir() {
605 [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}" 466 [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}"
606 467
607 popd > /dev/null 468 popd > /dev/null
608} 469}
609 470
610_calculate_kde_slot() { 471# @FUNCTION: get_kde_version
472# @DESCRIPTION:
473# Translates an ebuild version into a major.minor KDE SC
474# release version. If no version is specified, ${PV} is used.
475get_kde_version() {
611 local ver=${1:-${PV}} 476 local ver=${1:-${PV}}
612 local major=$(get_major_version ${ver}) 477 local major=$(get_major_version ${ver})
613 local minor=$(get_version_component_range 2 ${ver}) 478 local minor=$(get_version_component_range 2 ${ver})
614 local micro=$(get_version_component_range 3 ${ver}) 479 local micro=$(get_version_component_range 3 ${ver})
615 [[ ${ver} == 9999 ]] && echo live 480 if [[ ${ver} == 9999 ]]; then
616 (( major == 4 && micro == 9999 )) && echo ${major}.${minor} 481 echo live
617 if (( major == 4 && micro != 9999 )); then 482 else
618 (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1)) 483 (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1))
619 fi 484 fi
620} 485}

Legend:
Removed from v.1.48  
changed lines
  Added in v.1.62

  ViewVC Help
Powered by ViewVC 1.1.20