/[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.44 Revision 1.45
1# Copyright 1999-2010 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.44 2011/01/29 18:05:42 scarabeus Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.45 2011/04/06 14:22:14 scarabeus Exp $
4 4
5inherit versionator 5inherit versionator
6 6
7# @ECLASS: kde4-functions.eclass 7# @ECLASS: kde4-functions.eclass
8# @MAINTAINER: 8# @MAINTAINER:
12# This eclass contains all functions shared by the different eclasses, 12# This eclass contains all functions shared by the different eclasses,
13# for KDE 4 ebuilds. 13# for KDE 4 ebuilds.
14 14
15# @ECLASS-VARIABLE: EAPI 15# @ECLASS-VARIABLE: EAPI
16# @DESCRIPTION: 16# @DESCRIPTION:
17# By default kde4 eclasses want EAPI 2 which might be redefinable to newer 17# Currently kde4 eclasses support EAPI 3 and 4.
18# versions.
19case ${EAPI:-0} in 18case ${EAPI:-0} in
20 2|3|4) : ;; 19 4|3) : ;;
21 *) die "EAPI=${EAPI} is not supported" ;; 20 *) die "EAPI=${EAPI} is not supported" ;;
22esac 21esac
22
23# @ECLASS-VARIABLE: KDE_OVERRIDE_MINIMAL
24# @DESCRIPTION:
25# For use only in very few well-defined cases; normally it should be unset.
26# If this variable is set, all calls to add_kdebase_dep return a dependency on
27# at least this version, independent of the version of the package itself.
28# If you know exactly that one specific NEW KDE component builds and runs fine
29# with all the rest of KDE at an OLDER version, you can set this old version here.
30# Warning- may lead to general instability and kill your pet targh.
23 31
24# @ECLASS-VARIABLE: KDEBASE 32# @ECLASS-VARIABLE: KDEBASE
25# @DESCRIPTION: 33# @DESCRIPTION:
26# 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
27# koffice ebuild. 35# koffice ebuild.
28if [[ ${CATEGORY} = kde-base ]]; then 36if [[ ${CATEGORY} = kde-base ]]; then
29 debug-print "${ECLASS}: KDEBASE ebuild recognized" 37 debug-print "${ECLASS}: KDEBASE ebuild recognized"
30 KDEBASE=kde-base 38 KDEBASE=kde-base
31elif [[ ${KMNAME} = koffice || ${PN} = koffice ]]; then 39elif [[ ${KMNAME-${PN}} = koffice ]]; then
32 debug-print "${ECLASS}: KOFFICE ebuild recognized" 40 debug-print "${ECLASS}: KOFFICE ebuild recognized"
33 KDEBASE=koffice 41 KDEBASE=koffice
34elif [[ ${KMNAME} = kdevelop ]]; then 42elif [[ ${KMNAME-${PN}} = kdevelop ]]; then
35 debug-print "${ECLASS}: KDEVELOP ebuild recognized" 43 debug-print "${ECLASS}: KDEVELOP ebuild recognized"
36 KDEBASE="kdevelop" 44 KDEBASE=kdevelop
37fi 45fi
38 46
39# @ECLASS-VARIABLE: KDE_SLOTS 47# @ECLASS-VARIABLE: KDE_SLOTS
40# @DESCRIPTION: 48# @DESCRIPTION:
41# The slots used by all KDE versions later than 4.0. The live KDE releases use 49# The slots used by all KDE versions later than 4.0. The live KDE releases use
44 52
45# @ECLASS-VARIABLE: KDE_LIVE_SLOTS 53# @ECLASS-VARIABLE: KDE_LIVE_SLOTS
46# @DESCRIPTION: 54# @DESCRIPTION:
47# The slots used by KDE live versions. Values should be ordered. 55# The slots used by KDE live versions. Values should be ordered.
48KDE_LIVE_SLOTS=( "live" ) 56KDE_LIVE_SLOTS=( "live" )
57
58# determine the build type
59if [[ ${SLOT} = live || ${PV} = *9999* ]]; then
60 BUILD_TYPE="live"
61else
62 BUILD_TYPE="release"
63fi
64export BUILD_TYPE
65
66# Set reponame and SCM for moduleses that have fully migrated to git
67# (hack - it's here because it needs to be before SCM inherits from kde4-base)
68if [[ ${BUILD_TYPE} == live ]]; then
69 case "${KMNAME}" in
70 kdebase-workspace)
71 KDE_SCM="git"
72 EGIT_REPONAME=${EGIT_REPONAME:=kde-workspace}
73 ;;
74 kdebase-runtime)
75 KDE_SCM="git"
76 EGIT_REPONAME=${EGIT_REPONAME:=kde-runtime}
77 ;;
78 kdebase-apps)
79 KDE_SCM="git"
80 EGIT_REPONAME=${EGIT_REPONAME:=kde-baseapps}
81 ;;
82 esac
83fi
84
85# @ECLASS-VARIABLE: KDE_SCM
86# @DESCRIPTION:
87# If this is a live package which scm does it use
88# Everything else uses svn by default
89KDE_SCM="${KDE_SCM:-svn}"
90case ${KDE_SCM} in
91 svn|git) ;;
92 *) die "KDE_SCM: ${KDE_SCM} is not supported" ;;
93esac
94
95# @ECLASS-VARIABLE: KDE_LINGUAS
96# @DESCRIPTION:
97# This is a whitespace-separated list of translations this ebuild supports.
98# These translations are automatically added to IUSE. Therefore ebuilds must set
99# this variable before inheriting any eclasses. To enable only selected
100# translations, ebuilds must call enable_selected_linguas(). kde4-{base,meta}.eclass does
101# this for you.
102#
103# Example: KDE_LINGUAS="en_GB de nl"
104if [[ ${BUILD_TYPE} != live || -n ${KDE_LINGUAS_LIVE_OVERRIDE} ]]; then
105 for _lingua in ${KDE_LINGUAS}; do
106 IUSE="${IUSE} linguas_${_lingua}"
107 done
108fi
49 109
50# @FUNCTION: slot_is_at_least 110# @FUNCTION: slot_is_at_least
51# @USAGE: <want> <have> 111# @USAGE: <want> <have>
52# @DESCRIPTION: 112# @DESCRIPTION:
53# Version aware slot comparator. 113# Version aware slot comparator.
61# @DESCRIPTION: 121# @DESCRIPTION:
62# Function to rebuild the KDE System Configuration Cache. 122# Function to rebuild the KDE System Configuration Cache.
63# All KDE ebuilds should run this in pkg_postinst and pkg_postrm. 123# All KDE ebuilds should run this in pkg_postinst and pkg_postrm.
64buildsycoca() { 124buildsycoca() {
65 debug-print-function ${FUNCNAME} "$@" 125 debug-print-function ${FUNCNAME} "$@"
66
67 if [[ ${EAPI} == 2 ]] && ! use prefix; then
68 EROOT=${ROOT}
69 fi
70
71 local KDE3DIR="${EROOT}usr/kde/3.5"
72 if [[ -z ${EROOT%%/} && -x "${KDE3DIR}"/bin/kbuildsycoca ]]; then
73 # Since KDE3 is aware of shortcuts in /usr, rebuild database
74 # for KDE3 as well.
75 touch "${KDE3DIR}"/share/services/ksycoca
76 chmod 644 "${KDE3DIR}"/share/services/ksycoca
77
78 ebegin "Running kbuildsycoca to build global database"
79 XDG_DATA_DIRS="${EROOT}usr/local/share:${KDE3DIR}/share:${EROOT}usr/share" \
80 DISPLAY="" \
81 "${KDE3DIR}"/bin/kbuildsycoca --global --noincremental &> /dev/null
82 eend $?
83 fi
84 126
85 # We no longer need to run kbuildsycoca4, as kded does that automatically, as needed 127 # We no longer need to run kbuildsycoca4, as kded does that automatically, as needed
86 128
87 # fix permission for some directories 129 # fix permission for some directories
88 for x in share/{config,kde4}; do 130 for x in share/{config,kde4}; do
113 -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' \ 155 -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' \
114 -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' \ 156 -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' \
115 || die "${LINENO}: Initial sed died" 157 || die "${LINENO}: Initial sed died"
116} 158}
117 159
118# @ECLASS-VARIABLE: KDE_LINGUAS
119# @DESCRIPTION:
120# This is a whitespace-separated list of translations this ebuild supports.
121# These translations are automatically added to IUSE. Therefore ebuilds must set
122# this variable before inheriting any eclasses. To enable only selected
123# translations, ebuilds must call enable_selected_linguas(). kde4-{base,meta}.eclass does
124# this for you.
125#
126# Example: KDE_LINGUAS="en_GB de nl"
127for _lingua in ${KDE_LINGUAS}; do
128 IUSE="${IUSE} linguas_${_lingua}"
129done
130
131# @FUNCTION: enable_selected_linguas 160# @FUNCTION: enable_selected_linguas
132# @DESCRIPTION: 161# @DESCRIPTION:
133# Enable translations based on LINGUAS settings and translations supported by 162# Enable translations based on LINGUAS settings and translations supported by
134# the package (see KDE_LINGUAS). By default, translations are found in "${S}"/po 163# the package (see KDE_LINGUAS). By default, translations are found in "${S}"/po
135# but this default can be overridden by defining KDE_LINGUAS_DIR. 164# but this default can be overridden by defining KDE_LINGUAS_DIR.
149 # Can be defined as array of folders where translations are located. 178 # Can be defined as array of folders where translations are located.
150 # Note that space separated list of dirs is not supported. 179 # Note that space separated list of dirs is not supported.
151 # Default value is set to "po". 180 # Default value is set to "po".
152 if [[ "$(declare -p KDE_LINGUAS_DIR 2>/dev/null 2>&1)" == "declare -a"* ]]; then 181 if [[ "$(declare -p KDE_LINGUAS_DIR 2>/dev/null 2>&1)" == "declare -a"* ]]; then
153 debug-print "$FUNCNAME: we have these subfolders defined: ${KDE_LINGUAS_DIR}" 182 debug-print "$FUNCNAME: we have these subfolders defined: ${KDE_LINGUAS_DIR}"
154 for x in "${KDE_LINGUAS_DIR[@]}"; do 183 for x in ${KDE_LINGUAS_DIR[@]}; do
155 _enable_selected_linguas_dir ${x} 184 _enable_selected_linguas_dir ${x}
156 done 185 done
157 else 186 else
158 KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"} 187 KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"}
159 _enable_selected_linguas_dir ${KDE_LINGUAS_DIR} 188 _enable_selected_linguas_dir ${KDE_LINGUAS_DIR}
180 for pattern in ${KDE_DOC_DIRS}; do 209 for pattern in ${KDE_DOC_DIRS}; do
181 210
182 local handbookdir=`dirname ${pattern}` 211 local handbookdir=`dirname ${pattern}`
183 local translationdir=`basename ${pattern}` 212 local translationdir=`basename ${pattern}`
184 # Do filename pattern supplied, treat as directory 213 # Do filename pattern supplied, treat as directory
185 [[ "${handbookdir}" = '.' ]] && handbookdir=${translationdir} && translationdir= 214 [[ ${handbookdir} = '.' ]] && handbookdir=${translationdir} && translationdir=
186 [[ -d "${handbookdir}" ]] || die 'wrong doc dir specified' 215 [[ -d ${handbookdir} ]] || die 'wrong doc dir specified'
187 216
188 if ! use handbook; then 217 if ! use handbook; then
189 # Disable whole directory 218 # Disable whole directory
190 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \ 219 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
191 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \ 220 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
194 # Disable subdirectories recursively 223 # Disable subdirectories recursively
195 comment_all_add_subdirectory "${handbookdir}" 224 comment_all_add_subdirectory "${handbookdir}"
196 # Add requested translations 225 # Add requested translations
197 local lingua 226 local lingua
198 for lingua in en ${KDE_LINGUAS}; do 227 for lingua in en ${KDE_LINGUAS}; do
199 if [[ ${lingua} = 'en' ]] || use linguas_${lingua}; then 228 if [[ ${lingua} = en ]] || use linguas_${lingua}; then
200 if [[ -d "${handbookdir}/${translationdir//%lingua/${lingua}}" ]]; then 229 if [[ -d ${handbookdir}/${translationdir//%lingua/${lingua}} ]]; then
201 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \ 230 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \
202 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \ 231 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \
203 -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}" 232 -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}"
204 fi 233 fi
205 fi 234 fi
208 237
209 done 238 done
210 [[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}" 239 [[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}"
211} 240}
212 241
213# @FUNCTION: get_build_type
214# @DESCRIPTION:
215# Determine whether we are using live ebuild or tbzs.
216get_build_type() {
217 if [[ ${SLOT} = live || ${PV} = *9999* ]]; then
218 BUILD_TYPE="live"
219 else
220 BUILD_TYPE="release"
221 fi
222 export BUILD_TYPE
223}
224
225# @FUNCTION: migrate_store_dir 242# @FUNCTION: migrate_store_dir
226# @DESCRIPTION: 243# @DESCRIPTION:
227# Universal store dir migration 244# Universal store dir migration
228# * performs split of kdebase to kdebase-apps when needed 245# * performs split of kdebase to kdebase-apps when needed
229# * moves playground/extragear kde4-base-style to toplevel dir 246# * moves playground/extragear kde4-base-style to toplevel dir
230migrate_store_dir() { 247migrate_store_dir() {
248 if [[ ${KDE_SCM} != svn ]]; then
249 die "migrate_store_dir() only makes sense for subversion"
250 fi
251
231 local cleandir="${ESVN_STORE_DIR}/KDE" 252 local cleandir="${ESVN_STORE_DIR}/KDE"
253
232 if [[ -d "${cleandir}" ]]; then 254 if [[ -d ${cleandir} ]]; then
233 ewarn "'${cleandir}' has been found. Moving contents to new location." 255 ewarn "'${cleandir}' has been found. Moving contents to new location."
234 addwrite "${ESVN_STORE_DIR}" 256 addwrite "${ESVN_STORE_DIR}"
235 # Split kdebase 257 # Split kdebase
236 local module 258 local module
237 if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then 259 if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then
247 # Move the rest 269 # Move the rest
248 local pkg 270 local pkg
249 for pkg in "${cleandir}"/*; do 271 for pkg in "${cleandir}"/*; do
250 mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'" 272 mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'"
251 done 273 done
252 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." 274 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."
253 fi 275 fi
254 276
255 if ! hasq kde4-meta ${INHERITED}; then 277 if ! hasq kde4-meta ${INHERITED}; then
256 case ${KMNAME} in 278 case ${KMNAME} in
257 extragear*|playground*) 279 extragear*|playground*)
258 local svnlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}" 280 local scmlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}"
259 if [[ -d "${svnlocalpath}" ]]; then 281 if [[ -d "${scmlocalpath}" ]]; then
260 local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`" 282 local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`"
261 ewarn "'${svnlocalpath}' has been found." 283 ewarn "'${scmlocalpath}' has been found."
262 ewarn "Moving contents to new location: ${destdir}" 284 ewarn "Moving contents to new location: ${destdir}"
263 addwrite "${ESVN_STORE_DIR}" 285 addwrite "${ESVN_STORE_DIR}"
264 mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${svnlocalpath}" "${destdir}" \ 286 mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${scmlocalpath}" "${destdir}" \
265 || die "Failed to move to '${svnlocalpath}'" 287 || die "Failed to move to '${scmlocalpath}'"
266 # Try cleaning empty directories 288 # Try cleaning empty directories
267 rmdir "`dirname "${svnlocalpath}"`" 2> /dev/null 289 rmdir "`dirname "${scmlocalpath}"`" 2> /dev/null
268 fi 290 fi
269 ;; 291 ;;
270 esac 292 esac
271 fi 293 fi
272} 294}
306 328
307 i=0 329 i=0
308 for pn in ${KMLOADLIBS} ; do 330 for pn in ${KMLOADLIBS} ; do
309 ((i++)) 331 ((i++))
310 depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}" 332 depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}"
311 [[ -r "${depsfile}" ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}." 333 [[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}."
312 sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \ 334 sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \
313 die "Failed to include library dependencies for ${pn}" 335 die "Failed to include library dependencies for ${pn}"
314 done 336 done
315 eend $? 337 eend $?
316} 338}
357 RDEPEND+=" $(_do_blocker "$@")" 379 RDEPEND+=" $(_do_blocker "$@")"
358} 380}
359 381
360# @FUNCTION: add_kdebase_dep 382# @FUNCTION: add_kdebase_dep
361# @DESCRIPTION: 383# @DESCRIPTION:
362# Create proper dependency for kde-base/ dependencies, 384# Create proper dependency for kde-base/ dependencies, adding SLOT when needed
363# adding SLOT when needed (and *only* when needed). 385# (and *only* when needed).
364# This takes 1 or 2 arguments. The first being the package 386# This takes 1 to 3 arguments. The first being the package name, the optional
365# name, the optional second, is additional USE flags to append. 387# second is additional USE flags to append, and the optional third is the
388# version to use instead of the automatic version (use sparingly).
366# The output of this should be added directly to DEPEND/RDEPEND, and 389# The output of this should be added directly to DEPEND/RDEPEND, and may be
367# may be wrapped in a USE conditional (but not an || conditional 390# wrapped in a USE conditional (but not an || conditional without an extra set
368# without an extra set of parentheses). 391# of parentheses).
369add_kdebase_dep() { 392add_kdebase_dep() {
370 debug-print-function ${FUNCNAME} "$@" 393 debug-print-function ${FUNCNAME} "$@"
371 394
395 local ver
396
397 if [[ -n ${3} ]]; then
398 ver=${3}
399 elif [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then
400 ver=${KDE_OVERRIDE_MINIMAL}
401 elif [[ ${KDEBASE} != kde-base ]]; then
402 ver=${KDE_MINIMAL}
403 # FIXME remove hack when kdepim-4.4.* is gone
404 elif [[ ( ${KMNAME} == kdepim || ${PN} == kdepim-runtime ) && ${SLOT} == 4.4 && ${1} =~ ^(kde(pim)?libs|oxygen-icons)$ ]]; then
405 ver=4.4.5
406 # FIXME remove hack when kdepim-4.6beta is gone
407 elif [[ ( ${KMNAME} == kdepim || ${PN} == kdepim-runtime ) && ${PV} == 4.5.98 && ${1} =~ ^(kde(pim)?libs|oxygen-icons)$ ]]; then
408 ver=4.5.90
409 # if building stable-live version depend just on slot
410 # to allow merging packages against more stable basic stuff
411 elif [[ ${PV} == *.9999 ]]; then
412 ver=${SLOT}
413 else
414 ver=${PV}
415 fi
416
372 [[ -z ${1} ]] && die "Missing parameter" 417 [[ -z ${1} ]] && die "Missing parameter"
373 418
374 local use=${2:+,${2}} 419 local use=${2:+,${2}}
375 420
376 if [[ ${KDEBASE} = kde-base ]]; then 421 if [[ ${KDEBASE} = kde-base ]]; then
377 # FIXME remove hack when >kdepim-4.4.5 is gone
378 local FIXME_PV
379 if [[ ${KMNAME} = kdepim || ${PN} = kdepim-runtime ]] && [[ ${PV} = 4.4.6* || ${PV} = 4.4.7* || ${PV} = 4.4.8* || ${PV} = 4.4.9* || ${PV} = 4.4.10* ]] && [[ ${1} = kdelibs || ${1} = kdepimlibs || ${1} = oxygen-icons ]]; then
380 FIXME_PV=4.4.5
381 # FIXME remove hack when kdepim-4.6beta is gone
382 elif [[ ${KMNAME} = kdepim || ${PN} = kdepim-runtime ]] && [[ ${PV} = 4.5.93* ]] && [[ ${1} = kdelibs || ${1} = kdepimlibs || ${1} = oxygen-icons ]]; then
383 FIXME_PV=4.5.90
384 else
385 FIXME_PV=${PV}
386 fi
387
388 # if building stable-live version depend just on slot
389 # to allow merging packages against more stable basic stuff
390 case ${PV} in
391 *.9999*)
392 echo " !kdeprefix? ( >=kde-base/${1}-${SLOT}[aqua=,-kdeprefix${use}] )" 422 echo " !kdeprefix? ( >=kde-base/${1}-${ver}[aqua=,-kdeprefix${use}] )"
393 echo " kdeprefix? ( >=kde-base/${1}-${SLOT}:${SLOT}[aqua=,kdeprefix${use}] )" 423 echo " kdeprefix? ( >=kde-base/${1}-${ver}:${SLOT}[aqua=,kdeprefix${use}] )"
394 ;; 424 elif [[ ${ver} == live ]]; then
395 *) 425 echo " kde-base/${1}:live[aqua=${use}]"
396 echo " !kdeprefix? ( >=kde-base/${1}-${FIXME_PV}[aqua=,-kdeprefix${use}] )"
397 echo " kdeprefix? ( >=kde-base/${1}-${FIXME_PV}:${SLOT}[aqua=,kdeprefix${use}] )"
398 ;;
399 esac
400 else 426 else
401 if [[ ${KDE_MINIMAL} = live ]]; then
402 echo " kde-base/${1}:${KDE_MINIMAL}[aqua=${use}]"
403 else
404 echo " >=kde-base/${1}-${KDE_MINIMAL}[aqua=${use}]" 427 echo " >=kde-base/${1}-${ver}[aqua=${use}]"
405 fi
406 fi 428 fi
407} 429}
408 430
409# _greater_max_in_slot ver slot 431# _greater_max_in_slot ver slot
410# slot must be 4.x or live 432# slot must be 4.x or live
442# stdout instead of updating a variable. 464# stdout instead of updating a variable.
443_do_blocker() { 465_do_blocker() {
444 debug-print-function ${FUNCNAME} "$@" 466 debug-print-function ${FUNCNAME} "$@"
445 467
446 [[ -z ${1} ]] && die "Missing parameter" 468 [[ -z ${1} ]] && die "Missing parameter"
447 local pkg=kde-base/$1 469 local pkg=kde-base/$1 use
448 shift 470 shift
471 if [[ $pkg == *\[*\] ]]; then
472 use=${pkg#*\[}
473 use=${use%\]}
474 pkg=${pkg%\[*\]}
475 fi
476
449 local param slot def="unset" var atom 477 local param slot def="unset" var atom
450 # The following variables will hold parameters that contain ":" 478 # The following variables will hold parameters that contain ":"
451 # - block_3_5 479 # - block_3_5
452 # - block_4_1 480 # - block_4_1
453 # - block_4_2 481 # - block_4_2
494 else 522 else
495 atom="<=${pkg}-${!var}" 523 atom="<=${pkg}-${!var}"
496 fi 524 fi
497 # we always block our own slot, ignoring kdeprefix 525 # we always block our own slot, ignoring kdeprefix
498 if [[ ${SLOT} == ${slot} ]]; then 526 if [[ ${SLOT} == ${slot} ]]; then
499 echo " !${atom}:${slot}" 527 echo " !${atom}:${slot}${use:+[${use}]}"
500 else 528 else
501 # we only block other slots on -kdeprefix 529 # we only block other slots on -kdeprefix
502 echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix] )" 530 echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix${use:+,${use}}] )"
503 fi 531 fi
504 done 532 done
505 533
506 # This is a special case block for :3.5; it does not use the 534 # This is a special case block for :3.5; it does not use the
507 # default version passed, and no blocker is output *unless* a version 535 # default version passed, and no blocker is output *unless* a version
513 elif [[ ${block_3_5:0:1} == "<" ]]; then 541 elif [[ ${block_3_5:0:1} == "<" ]]; then
514 atom="<${pkg}-${block_3_5:1}" 542 atom="<${pkg}-${block_3_5:1}"
515 else 543 else
516 atom="<=${pkg}-${block_3_5}" 544 atom="<=${pkg}-${block_3_5}"
517 fi 545 fi
518 echo " !${atom}:3.5" 546 echo " !${atom}:3.5${use:+[${use}]}"
519 fi 547 fi
520} 548}
521 549
522# local function to enable specified translations for specified directory 550# local function to enable specified translations for specified directory
523# used from kde4-functions_enable_selected_linguas function 551# used from kde4-functions_enable_selected_linguas function
524_enable_selected_linguas_dir() { 552_enable_selected_linguas_dir() {
525 local lingua linguas sr_mess wp 553 local lingua linguas sr_mess wp
526 local dir=${1} 554 local dir=${1}
527 555
528 [[ -d "${dir}" ]] || die "linguas dir \"${dir}\" does not exist" 556 [[ -d ${dir} ]] || die "linguas dir \"${dir}\" does not exist"
529 comment_all_add_subdirectory "${dir}" 557 comment_all_add_subdirectory "${dir}"
530 pushd "${dir}" > /dev/null 558 pushd "${dir}" > /dev/null
531 559
532 # fix all various crazy sr@Latn variations 560 # fix all various crazy sr@Latn variations
533 # this part is only ease for ebuilds, so there wont be any die when this 561 # this part is only ease for ebuilds, so there wont be any die when this
534 # fail at any point 562 # fail at any point
535 sr_mess="sr@latn sr@latin sr@Latin" 563 sr_mess="sr@latn sr@latin sr@Latin"
536 for wp in ${sr_mess}; do 564 for wp in ${sr_mess}; do
537 [[ -e "${wp}.po" ]] && mv "${wp}.po" "sr@Latn.po" 565 [[ -e ${wp}.po ]] && mv "${wp}.po" "sr@Latn.po"
538 if [[ -d "${wp}" ]]; then 566 if [[ -d ${wp} ]]; then
539 # move dir and fix cmakelists 567 # move dir and fix cmakelists
540 mv "${wp}" "sr@Latn" 568 mv "${wp}" "sr@Latn"
541 sed -i \ 569 sed -i \
542 -e "s:${wp}:sr@Latin:g" \ 570 -e "s:${wp}:sr@Latn:g" \
543 CMakeLists.txt 571 CMakeLists.txt
544 fi 572 fi
545 done 573 done
546 574
547 for lingua in ${KDE_LINGUAS}; do 575 for lingua in ${KDE_LINGUAS}; do
548 if [[ -e "${lingua}.po" ]]; then 576 if [[ -e ${lingua}.po ]]; then
549 mv "${lingua}.po" "${lingua}.po.old" 577 mv "${lingua}.po" "${lingua}.po.old"
550 fi 578 fi
551 done 579 done
552 580
553 for lingua in ${KDE_LINGUAS}; do 581 for lingua in ${KDE_LINGUAS}; do
554 if use linguas_${lingua} ; then 582 if use linguas_${lingua} ; then
555 if [[ -d "${lingua}" ]]; then 583 if [[ -d ${lingua} ]]; then
556 linguas="${linguas} ${lingua}" 584 linguas="${linguas} ${lingua}"
557 sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \ 585 sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
558 -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \ 586 -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
559 -i CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed." 587 -i CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed."
560 fi 588 fi
561 if [[ -e "${lingua}.po.old" ]]; then 589 if [[ -e ${lingua}.po.old ]]; then
562 linguas="${linguas} ${lingua}" 590 linguas="${linguas} ${lingua}"
563 mv "${lingua}.po.old" "${lingua}.po" 591 mv "${lingua}.po.old" "${lingua}.po"
564 fi 592 fi
565 fi 593 fi
566 done 594 done
567 [[ -n "${linguas}" ]] && echo ">>> Enabling languages: ${linguas}" 595 [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}"
568 596
569 popd > /dev/null 597 popd > /dev/null
570} 598}
599
600_calculate_kde_slot() {
601 local ver=${1:-${PV}}
602 local major=$(get_major_version ${ver})
603 local minor=$(get_version_component_range 2 ${ver})
604 local micro=$(get_version_component_range 3 ${ver})
605 [[ ${ver} == 9999 ]] && echo live
606 (( major == 4 && micro == 9999 )) && echo ${major}.${minor}
607 if (( major == 4 && micro != 9999 )); then
608 (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1))
609 fi
610}

Legend:
Removed from v.1.44  
changed lines
  Added in v.1.45

  ViewVC Help
Powered by ViewVC 1.1.20