/[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.38 Revision 1.48
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.38 2010/12/06 10:17:04 tampakrap Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.48 2011/05/24 20:54:58 abcd 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) : ;; 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
42# KDE_LIVE_SLOTS instead. Values should be ordered. 50# KDE_LIVE_SLOTS instead. Values should be ordered.
43KDE_SLOTS=( "4.1" "4.2" "4.3" "4.4" "4.5" "4.6" ) 51KDE_SLOTS=( "4.1" "4.2" "4.3" "4.4" "4.5" "4.6" "4.7" )
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.
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 126
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
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
89 [[ ${KDEDIR} == /usr ]] && DIRS=${EROOT}usr || DIRS="${EROOT}usr ${EROOT}${KDEDIR}" 131 [[ ${KDEDIR} == /usr ]] && DIRS=${EROOT}usr || DIRS="${EROOT}usr ${EROOT}${KDEDIR}"
90 for y in ${DIRS}; do 132 for y in ${DIRS}; do
91 [[ -d "${y}/${x}" ]] || break # nothing to do if directory does not exist 133 [[ -d "${y}/${x}" ]] || break # nothing to do if directory does not exist
134 # fixes Bug 318237
135 if use userland_BSD ; then
136 [[ $(stat -f %p "${y}/${x}") != 40755 ]]
137 local stat_rtn="$?"
138 else
92 if [[ $(stat --format=%a "${y}/${x}") != 755 ]]; then 139 [[ $(stat --format=%a "${y}/${x}") != 755 ]]
140 local stat_rtn=$?
141 fi
142 if [[ $stat_rtn != 1 ]] ; then
93 ewarn "QA Notice:" 143 ewarn "QA Notice:"
94 ewarn "Package ${PN} is breaking ${y}/${x} permissions." 144 ewarn "Package ${PN} is breaking ${y}/${x} permissions."
95 ewarn "Please report this issue to gentoo bugzilla." 145 ewarn "Please report this issue to gentoo bugzilla."
96 einfo "Permissions will get adjusted automatically now." 146 einfo "Permissions will get adjusted automatically now."
97 find "${y}/${x}" -type d -print0 | xargs -0 chmod 755 147 find "${y}/${x}" -type d -print0 | xargs -0 chmod 755
113 -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' \ 163 -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' \
114 -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' \ 164 -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' \
115 || die "${LINENO}: Initial sed died" 165 || die "${LINENO}: Initial sed died"
116} 166}
117 167
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 168# @FUNCTION: enable_selected_linguas
132# @DESCRIPTION: 169# @DESCRIPTION:
133# Enable translations based on LINGUAS settings and translations supported by 170# Enable translations based on LINGUAS settings and translations supported by
134# the package (see KDE_LINGUAS). By default, translations are found in "${S}"/po 171# 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. 172# but this default can be overridden by defining KDE_LINGUAS_DIR.
149 # Can be defined as array of folders where translations are located. 186 # Can be defined as array of folders where translations are located.
150 # Note that space separated list of dirs is not supported. 187 # Note that space separated list of dirs is not supported.
151 # Default value is set to "po". 188 # Default value is set to "po".
152 if [[ "$(declare -p KDE_LINGUAS_DIR 2>/dev/null 2>&1)" == "declare -a"* ]]; then 189 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}" 190 debug-print "$FUNCNAME: we have these subfolders defined: ${KDE_LINGUAS_DIR}"
154 for x in "${KDE_LINGUAS_DIR[@]}"; do 191 for x in ${KDE_LINGUAS_DIR[@]}; do
155 _enable_selected_linguas_dir ${x} 192 _enable_selected_linguas_dir ${x}
156 done 193 done
157 else 194 else
158 KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"} 195 KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"}
159 _enable_selected_linguas_dir ${KDE_LINGUAS_DIR} 196 _enable_selected_linguas_dir ${KDE_LINGUAS_DIR}
180 for pattern in ${KDE_DOC_DIRS}; do 217 for pattern in ${KDE_DOC_DIRS}; do
181 218
182 local handbookdir=`dirname ${pattern}` 219 local handbookdir=`dirname ${pattern}`
183 local translationdir=`basename ${pattern}` 220 local translationdir=`basename ${pattern}`
184 # Do filename pattern supplied, treat as directory 221 # Do filename pattern supplied, treat as directory
185 [[ "${handbookdir}" = '.' ]] && handbookdir=${translationdir} && translationdir= 222 [[ ${handbookdir} = '.' ]] && handbookdir=${translationdir} && translationdir=
186 [[ -d "${handbookdir}" ]] || die 'wrong doc dir specified' 223 [[ -d ${handbookdir} ]] || die 'wrong doc dir specified'
187 224
188 if ! use handbook; then 225 if ! use handbook; then
189 # Disable whole directory 226 # Disable whole directory
190 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \ 227 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
191 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \ 228 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
194 # Disable subdirectories recursively 231 # Disable subdirectories recursively
195 comment_all_add_subdirectory "${handbookdir}" 232 comment_all_add_subdirectory "${handbookdir}"
196 # Add requested translations 233 # Add requested translations
197 local lingua 234 local lingua
198 for lingua in en ${KDE_LINGUAS}; do 235 for lingua in en ${KDE_LINGUAS}; do
199 if [[ ${lingua} = 'en' ]] || use linguas_${lingua}; then 236 if [[ ${lingua} = en ]] || use linguas_${lingua}; then
200 if [[ -d "${handbookdir}/${translationdir//%lingua/${lingua}}" ]]; then 237 if [[ -d ${handbookdir}/${translationdir//%lingua/${lingua}} ]]; then
201 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \ 238 sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \
202 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \ 239 -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" \
203 -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}" 240 -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}"
204 fi 241 fi
205 fi 242 fi
208 245
209 done 246 done
210 [[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}" 247 [[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}"
211} 248}
212 249
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 250# @FUNCTION: migrate_store_dir
226# @DESCRIPTION: 251# @DESCRIPTION:
227# Universal store dir migration 252# Universal store dir migration
228# * performs split of kdebase to kdebase-apps when needed 253# * performs split of kdebase to kdebase-apps when needed
229# * moves playground/extragear kde4-base-style to toplevel dir 254# * moves playground/extragear kde4-base-style to toplevel dir
230migrate_store_dir() { 255migrate_store_dir() {
256 if [[ ${KDE_SCM} != svn ]]; then
257 die "migrate_store_dir() only makes sense for subversion"
258 fi
259
231 local cleandir="${ESVN_STORE_DIR}/KDE" 260 local cleandir="${ESVN_STORE_DIR}/KDE"
261
232 if [[ -d "${cleandir}" ]]; then 262 if [[ -d ${cleandir} ]]; then
233 ewarn "'${cleandir}' has been found. Moving contents to new location." 263 ewarn "'${cleandir}' has been found. Moving contents to new location."
234 addwrite "${ESVN_STORE_DIR}" 264 addwrite "${ESVN_STORE_DIR}"
235 # Split kdebase 265 # Split kdebase
236 local module 266 local module
237 if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then 267 if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then
247 # Move the rest 277 # Move the rest
248 local pkg 278 local pkg
249 for pkg in "${cleandir}"/*; do 279 for pkg in "${cleandir}"/*; do
250 mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'" 280 mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'"
251 done 281 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." 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."
253 fi 283 fi
254 284
255 if ! hasq kde4-meta ${INHERITED}; then 285 if ! hasq kde4-meta ${INHERITED}; then
256 case ${KMNAME} in 286 case ${KMNAME} in
257 extragear*|playground*) 287 extragear*|playground*)
258 local svnlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}" 288 local scmlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}"
259 if [[ -d "${svnlocalpath}" ]]; then 289 if [[ -d "${scmlocalpath}" ]]; then
260 local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`" 290 local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`"
261 ewarn "'${svnlocalpath}' has been found." 291 ewarn "'${scmlocalpath}' has been found."
262 ewarn "Moving contents to new location: ${destdir}" 292 ewarn "Moving contents to new location: ${destdir}"
263 addwrite "${ESVN_STORE_DIR}" 293 addwrite "${ESVN_STORE_DIR}"
264 mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${svnlocalpath}" "${destdir}" \ 294 mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${scmlocalpath}" "${destdir}" \
265 || die "Failed to move to '${svnlocalpath}'" 295 || die "Failed to move to '${scmlocalpath}'"
266 # Try cleaning empty directories 296 # Try cleaning empty directories
267 rmdir "`dirname "${svnlocalpath}"`" 2> /dev/null 297 rmdir "`dirname "${scmlocalpath}"`" 2> /dev/null
268 fi 298 fi
269 ;; 299 ;;
270 esac 300 esac
271 fi 301 fi
272} 302}
306 336
307 i=0 337 i=0
308 for pn in ${KMLOADLIBS} ; do 338 for pn in ${KMLOADLIBS} ; do
309 ((i++)) 339 ((i++))
310 depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}" 340 depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}"
311 [[ -r "${depsfile}" ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}." 341 [[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}."
312 sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \ 342 sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \
313 die "Failed to include library dependencies for ${pn}" 343 die "Failed to include library dependencies for ${pn}"
314 done 344 done
315 eend $? 345 eend $?
316} 346}
357 RDEPEND+=" $(_do_blocker "$@")" 387 RDEPEND+=" $(_do_blocker "$@")"
358} 388}
359 389
360# @FUNCTION: add_kdebase_dep 390# @FUNCTION: add_kdebase_dep
361# @DESCRIPTION: 391# @DESCRIPTION:
362# Create proper dependency for kde-base/ dependencies, 392# Create proper dependency for kde-base/ dependencies, adding SLOT when needed
363# adding SLOT when needed (and *only* when needed). 393# (and *only* when needed).
364# This takes 1 or 2 arguments. The first being the package 394# 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. 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).
366# The output of this should be added directly to DEPEND/RDEPEND, and 397# 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 398# wrapped in a USE conditional (but not an || conditional without an extra set
368# without an extra set of parentheses). 399# of parentheses).
369add_kdebase_dep() { 400add_kdebase_dep() {
370 debug-print-function ${FUNCNAME} "$@" 401 debug-print-function ${FUNCNAME} "$@"
371 402
403 local ver
404
405 if [[ -n ${3} ]]; then
406 ver=${3}
407 elif [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then
408 ver=${KDE_OVERRIDE_MINIMAL}
409 elif [[ ${KDEBASE} != kde-base ]]; then
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
418 # to allow merging packages against more stable basic stuff
419 elif [[ ${PV} == *.9999 ]]; then
420 ver=${SLOT}
421 else
422 ver=${PV}
423 fi
424
372 [[ -z ${1} ]] && die "Missing parameter" 425 [[ -z ${1} ]] && die "Missing parameter"
373 426
374 local use=${2:+,${2}} 427 local use=${2:+,${2}}
375 428
376 if [[ ${KDEBASE} = kde-base ]]; then 429 if [[ ${KDEBASE} = kde-base ]]; then
377 # FIXME remove hack when kdepim-4.4.{6,7} 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* ]] && [[ ${1} = kdelibs || ${1} = kdepimlibs ]]; then
380 FIXME_PV=4.4.5
381 else
382 FIXME_PV=${PV}
383 fi
384
385 # if building stable-live version depend just on slot
386 # to allow merging packages against more stable basic stuff
387 case ${PV} in
388 *.9999*)
389 echo " !kdeprefix? ( >=kde-base/${1}-${SLOT}[aqua=,-kdeprefix${use}] )" 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 ]] || \
390 echo " kdeprefix? ( >=kde-base/${1}-${SLOT}:${SLOT}[aqua=,kdeprefix${use}] )" 433 echo " kdeprefix? ( >=kde-base/${1}-${ver}:${SLOT}[aqua=,kdeprefix${use}] )"
391 ;; 434 elif [[ ${ver} == live ]]; then
392 *) 435 echo " kde-base/${1}:live[aqua=${use}]"
393 echo " !kdeprefix? ( >=kde-base/${1}-${FIXME_PV}[aqua=,-kdeprefix${use}] )"
394 echo " kdeprefix? ( >=kde-base/${1}-${FIXME_PV}:${SLOT}[aqua=,kdeprefix${use}] )"
395 ;;
396 esac
397 else 436 else
398 if [[ ${KDE_MINIMAL} = live ]]; then
399 echo " kde-base/${1}:${KDE_MINIMAL}[aqua=${use}]"
400 else
401 echo " >=kde-base/${1}-${KDE_MINIMAL}[aqua=${use}]" 437 echo " >=kde-base/${1}-${ver}[aqua=${use}]"
402 fi
403 fi 438 fi
404} 439}
405 440
406# _greater_max_in_slot ver slot 441# _greater_max_in_slot ver slot
407# slot must be 4.x or live 442# slot must be 4.x or live
439# stdout instead of updating a variable. 474# stdout instead of updating a variable.
440_do_blocker() { 475_do_blocker() {
441 debug-print-function ${FUNCNAME} "$@" 476 debug-print-function ${FUNCNAME} "$@"
442 477
443 [[ -z ${1} ]] && die "Missing parameter" 478 [[ -z ${1} ]] && die "Missing parameter"
444 local pkg=kde-base/$1 479 local pkg=kde-base/$1 use
445 shift 480 shift
481 if [[ $pkg == *\[*\] ]]; then
482 use=${pkg#*\[}
483 use=${use%\]}
484 pkg=${pkg%\[*\]}
485 fi
486
446 local param slot def="unset" var atom 487 local param slot def="unset" var atom
447 # The following variables will hold parameters that contain ":" 488 # The following variables will hold parameters that contain ":"
448 # - block_3_5 489 # - block_3_5
449 # - block_4_1 490 # - block_4_1
450 # - block_4_2 491 # - block_4_2
491 else 532 else
492 atom="<=${pkg}-${!var}" 533 atom="<=${pkg}-${!var}"
493 fi 534 fi
494 # we always block our own slot, ignoring kdeprefix 535 # we always block our own slot, ignoring kdeprefix
495 if [[ ${SLOT} == ${slot} ]]; then 536 if [[ ${SLOT} == ${slot} ]]; then
496 echo " !${atom}:${slot}" 537 echo " !${atom}:${slot}${use:+[${use}]}"
497 else 538 else
498 # we only block other slots on -kdeprefix 539 # we only block other slots on -kdeprefix
499 echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix] )" 540 echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix${use:+,${use}}] )"
500 fi 541 fi
501 done 542 done
502 543
503 # This is a special case block for :3.5; it does not use the 544 # This is a special case block for :3.5; it does not use the
504 # default version passed, and no blocker is output *unless* a version 545 # default version passed, and no blocker is output *unless* a version
510 elif [[ ${block_3_5:0:1} == "<" ]]; then 551 elif [[ ${block_3_5:0:1} == "<" ]]; then
511 atom="<${pkg}-${block_3_5:1}" 552 atom="<${pkg}-${block_3_5:1}"
512 else 553 else
513 atom="<=${pkg}-${block_3_5}" 554 atom="<=${pkg}-${block_3_5}"
514 fi 555 fi
515 echo " !${atom}:3.5" 556 echo " !${atom}:3.5${use:+[${use}]}"
516 fi 557 fi
517} 558}
518 559
519# local function to enable specified translations for specified directory 560# local function to enable specified translations for specified directory
520# used from kde4-functions_enable_selected_linguas function 561# used from kde4-functions_enable_selected_linguas function
521_enable_selected_linguas_dir() { 562_enable_selected_linguas_dir() {
522 local lingua linguas sr_mess wp 563 local lingua linguas sr_mess wp
523 local dir=${1} 564 local dir=${1}
524 565
525 [[ -d "${dir}" ]] || die "linguas dir \"${dir}\" does not exist" 566 [[ -d ${dir} ]] || die "linguas dir \"${dir}\" does not exist"
526 comment_all_add_subdirectory "${dir}" 567 comment_all_add_subdirectory "${dir}"
527 pushd "${dir}" > /dev/null 568 pushd "${dir}" > /dev/null
528 569
529 # fix all various crazy sr@Latn variations 570 # fix all various crazy sr@Latn variations
530 # this part is only ease for ebuilds, so there wont be any die when this 571 # this part is only ease for ebuilds, so there wont be any die when this
531 # fail at any point 572 # fail at any point
532 sr_mess="sr@latn sr@latin sr@Latin" 573 sr_mess="sr@latn sr@latin sr@Latin"
533 for wp in ${sr_mess}; do 574 for wp in ${sr_mess}; do
534 [[ -e "${wp}.po" ]] && mv "${wp}.po" "sr@Latn.po" 575 [[ -e ${wp}.po ]] && mv "${wp}.po" "sr@Latn.po"
535 if [[ -d "${wp}" ]]; then 576 if [[ -d ${wp} ]]; then
536 # move dir and fix cmakelists 577 # move dir and fix cmakelists
537 mv "${wp}" "sr@Latn" 578 mv "${wp}" "sr@Latn"
538 sed -i \ 579 sed -i \
539 -e "s:${wp}:sr@Latin:g" \ 580 -e "s:${wp}:sr@Latn:g" \
540 CMakeLists.txt 581 CMakeLists.txt
541 fi 582 fi
542 done 583 done
543 584
544 for lingua in ${KDE_LINGUAS}; do 585 for lingua in ${KDE_LINGUAS}; do
545 if [[ -e "${lingua}.po" ]]; then 586 if [[ -e ${lingua}.po ]]; then
546 mv "${lingua}.po" "${lingua}.po.old" 587 mv "${lingua}.po" "${lingua}.po.old"
547 fi 588 fi
548 done 589 done
549 590
550 for lingua in ${KDE_LINGUAS}; do 591 for lingua in ${KDE_LINGUAS}; do
551 if use linguas_${lingua} ; then 592 if use linguas_${lingua} ; then
552 if [[ -d "${lingua}" ]]; then 593 if [[ -d ${lingua} ]]; then
553 linguas="${linguas} ${lingua}" 594 linguas="${linguas} ${lingua}"
554 sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \ 595 sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
555 -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \ 596 -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
556 -i CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed." 597 -i CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed."
557 fi 598 fi
558 if [[ -e "${lingua}.po.old" ]]; then 599 if [[ -e ${lingua}.po.old ]]; then
559 linguas="${linguas} ${lingua}" 600 linguas="${linguas} ${lingua}"
560 mv "${lingua}.po.old" "${lingua}.po" 601 mv "${lingua}.po.old" "${lingua}.po"
561 fi 602 fi
562 fi 603 fi
563 done 604 done
564 [[ -n "${linguas}" ]] && echo ">>> Enabling languages: ${linguas}" 605 [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}"
565 606
566 popd > /dev/null 607 popd > /dev/null
567} 608}
609
610_calculate_kde_slot() {
611 local ver=${1:-${PV}}
612 local major=$(get_major_version ${ver})
613 local minor=$(get_version_component_range 2 ${ver})
614 local micro=$(get_version_component_range 3 ${ver})
615 [[ ${ver} == 9999 ]] && echo live
616 (( major == 4 && micro == 9999 )) && echo ${major}.${minor}
617 if (( major == 4 && micro != 9999 )); then
618 (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1))
619 fi
620}

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

  ViewVC Help
Powered by ViewVC 1.1.20