diff options
| author | Jonathan Callen <abcd@gentoo.org> | 2009-09-11 22:50:37 -0400 |
|---|---|---|
| committer | Jonathan Callen <abcd@gentoo.org> | 2009-09-12 00:02:14 -0400 |
| commit | e5768da5311f892933411f95fc2669480723356a (patch) | |
| tree | 755c377696378db5cf493b5455b49ca8c7fb8d31 | |
| parent | 6658447f57b455e0534415f667137c57691a48ea (diff) | |
| download | kde-e5768da5311f892933411f95fc2669480723356a.tar.gz kde-e5768da5311f892933411f95fc2669480723356a.tar.bz2 kde-e5768da5311f892933411f95fc2669480723356a.zip | |
Add features to add_blocker, and use it for all blockers to kde-base/ apps in kde-base/
Please see the comments in kde4-functions.eclass for documentation.
96 files changed, 385 insertions, 535 deletions
diff --git a/eclass/kde4-functions.eclass b/eclass/kde4-functions.eclass index 419272a6f58..d1e1d554057 100644 --- a/eclass/kde4-functions.eclass +++ b/eclass/kde4-functions.eclass @@ -2,6 +2,8 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.18 2009/05/09 13:23:15 scarabeus Exp $ +inherit versionator + # Prefix compat: : ${EROOT:=${ROOT}} # Append missing trailing slash character @@ -372,32 +374,114 @@ load_library_dependencies() { block_other_slots() { debug-print-function ${FUNCNAME} "$@" - local slot - for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do - # Block non kdeprefix ${PN} on other slots - if [[ ${SLOT} != ${slot} ]]; then - echo "!kdeprefix? ( !kde-base/${PN}:${slot}[-kdeprefix] )" - fi - done + _do_blocker ${CATEGORY}/${PN} 0:${SLOT} } # @FUNCTION: add_blocker # @DESCRIPTION: # Create correct RDEPEND value for blocking correct package. -# Usefull for file-collision blocks. -# Parameters are package and version to block. +# Useful for file-collision blocks. +# Parameters are package and version(s) to block. # add_blocker kdelibs 4.2.4 +# If no version is specified, then all versions will be blocked +# If any arguments (from 2 on) contain a ":", then different versions +# are blocked in different slots. (Unlisted slots get the version without +# a ":", if none, then all versions are blocked). The parameter is then of +# the form VERSION:SLOT. Any VERSION of 0 means that no blocker will be +# added for that slot (or, if no slot, then for any unlisted slot). +# A parameter of the form :SLOT means to block all versions from that slot. +# If VERSION begins with "<", then "!<foo" will be used instead of "!<=foo". +# As a special case, if a parameter with slot "3.5" is passed, then that slot +# may also be blocked. +# +# Versions that match "4.x.50" are equivalent to all slots up to (and including) +# "4.x", but nothing following slot "4.x" +# +# As an example, if SLOT=live, then +# add_blocker kdelibs 0 :4.3 '<4.3.96:4.4' 9999:live +# will add the following to RDEPEND: +# !kdeprefix? ( !kde-base/kdelibs:4.3[-kdeprefix] ) +# !kdeprefix? ( !<kde-base/kdelibs-4.3.96:4.4[-kdeprefix] ) +# !kdeprefix? ( !<=kde-base/kdelibs-9999:live[-kdeprefix] ) +# kdeprefix? ( !<=kde-base/kdelibs-9999:live[kdeprefix] ) add_blocker() { debug-print-function ${FUNCNAME} "$@" - [[ ${1} = "" || ${2} = "" ]] && die "Missing parameter" - local slot + RDEPEND+=" $(_do_blocker "$@")" +} + +# _greater_max_in_slot ver slot +_greater_max_in_slot() { + local ver=$1 + local slot=$2 + [[ $slot == live ]] && return 1 + local test=${slot}.50 + version_compare $1 ${test} + [[ $? -ne 1 ]] +} + +# _less_min_in_slot ver slot +# slot must be 4.x or live +_less_min_in_slot() { + local ver=$1 + local slot=$2 + local test=9999 + [[ $slot == live ]] || test=${slot%.*}.$((${slot#*.} - 1)).50 + version_compare $1 ${test} + [[ $? -eq 1 ]] +} + +# Internal function used for add_blocker and block_other_slots +# This takes the same parameters as add_blocker, but echos to +# stdout instead of updating a variable. +_do_blocker() { + debug-print-function ${FUNCNAME} "$@" + + [[ -z ${1} ]] && die "Missing parameter" + local pkg=kde-base/$1 + shift + local param slot def="unset" + for slot in 3.5 ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do + slot=${slot//[.-]/_} + local block_${slot}="unset" + done + for param; do + if [[ ${param/:} == ${param} ]]; then + def=${param} + else + slot=${param#*:} + local block_${slot//[.-]/_}=${param%:*} + fi + done + local var atom for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do + var=block_${slot//[.-]/_} + [[ ${!var} == "unset" ]] && var=def + if [[ ${!var} == "0" ]] || _less_min_in_slot ${!var#<} ${slot}; then + continue + elif [[ ${!var} == "unset" || -z ${!var} ]] || _greater_max_in_slot ${!var#<} ${slot}; then + atom=${pkg} + elif [[ ${!var:0:1} == "<" ]]; then + atom="<${pkg}-${!var:1}" + else + atom="<=${pkg}-${!var}" + fi # on -kdeprefix we block every slot - RDEPEND+=" !kdeprefix? ( !<=kde-base/${1}-${2}:${slot}[-kdeprefix] )" + echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix] )" + if [[ ${SLOT} == ${slot} ]]; then + echo " kdeprefix? ( !${atom}:${SLOT}[kdeprefix] )" + fi done - # on kdeprefix we block only our slot - RDEPEND+=" kdeprefix? ( !<=kde-base/${1}-${2}:${SLOT}[kdeprefix] )" + if [[ ${block_3_5} != "unset" && ${block_3_5} != "0" ]]; then + if [[ -z ${block_3_5} ]]; then + atom=${pkg} + elif [[ ${block_3_5:0:1} == "<" ]]; then + atom="<${pkg}-${block_3_5:1}" + else + atom="<=${pkg}-${block_3_5}" + fi + echo " !${atom}:3.5" + fi } # @FUNCTION: add_kdebase_dep diff --git a/kde-base/akonadi/Manifest b/kde-base/akonadi/Manifest index 5bdbcf90772..6a417866577 100644 --- a/kde-base/akonadi/Manifest +++ b/kde-base/akonadi/Manifest @@ -1,5 +1,5 @@ DIST kdepim-runtime-4.3.67.tar.lzma 670465 RMD160 22a41398f5e850edf778e52b5e7126c0cff7791c SHA1 cee098e6b26bf4aa382175cf71ed29736dd3722c SHA256 09e5ca290e40ee4783672ed8efc6334f308561b556eb5a62bed604ee0d7ed774 -EBUILD akonadi-4.3.67.ebuild 2685 RMD160 e88af48063dda3e873a2d2d923c815b35928aa17 SHA1 67eb2a4c27d20bf805bd24f1733611eb902df4a5 SHA256 7943f02b128b64ac6366f6cfcab4147bba59e2a834eafbaeb0da21e44c95ce0a -EBUILD akonadi-4.3.9999.ebuild 2643 RMD160 987fa0fa8a5a343f6354f50e46eef0730b67b942 SHA1 2e600e87ec40625b92e5e58b91e975d539ed7e6b SHA256 3b57b7b6e637e12a3ae0987d2cc20c0bec1fde81f001200d4661671d92bc185b -EBUILD akonadi-9999-r1.ebuild 2643 RMD160 987fa0fa8a5a343f6354f50e46eef0730b67b942 SHA1 2e600e87ec40625b92e5e58b91e975d539ed7e6b SHA256 3b57b7b6e637e12a3ae0987d2cc20c0bec1fde81f001200d4661671d92bc185b +EBUILD akonadi-4.3.67.ebuild 2439 RMD160 29a96dfd6bebbcf948f8ecc65af2c8573031033e SHA1 798bdd88e3d6d871d27f8af0a978fe2564753a74 SHA256 f930e71d8df3ceaf70fe06983d4689abf1ea1bf62bdb33ae177026671b4f3396 +EBUILD akonadi-4.3.9999.ebuild 2397 RMD160 8ada908dd31214da83639e889d6ff68445dac107 SHA1 1bec04568837e574541502d11180028369f664cb SHA256 2540abbba77a9995a75df67c298d6fc04bbc095ff31fb43e960e21cf3e2284e6 +EBUILD akonadi-9999-r1.ebuild 2397 RMD160 8ada908dd31214da83639e889d6ff68445dac107 SHA1 1bec04568837e574541502d11180028369f664cb SHA256 2540abbba77a9995a75df67c298d6fc04bbc095ff31fb43e960e21cf3e2284e6 MISC metadata.xml 264 RMD160 4d66ebe451b6634cb712a67519338b16a556b983 SHA1 272c64cf9e24ac997a3a9d4ce32249a09f4d62bd SHA256 7c3b87ecba257c3c302e5beccf9e21d858c9651ea7b6b723b79a3364f671b7e5 diff --git a/kde-base/akonadi/akonadi-4.3.67.ebuild b/kde-base/akonadi/akonadi-4.3.67.ebuild index d2261201b0f..d860b5dfd23 100644 --- a/kde-base/akonadi/akonadi-4.3.67.ebuild +++ b/kde-base/akonadi/akonadi-4.3.67.ebuild @@ -29,21 +29,14 @@ DEPEND=" $(add_kdebase_dep kdepimlibs) x11-misc/shared-mime-info " -# @since 4.3 - blocks kdemaildir - no longer provided (it's in akonadi now) RDEPEND="${DEPEND} - !kdeprefix? ( - !kde-base/kdemaildir[-kdeprefix] - !~kde-base/kdepim-kresources-4.2.3[-kdeprefix] - !~kde-base/kdepim-kresources-4.2.4[-kdeprefix] - !<kde-base/kdepim-kresources-4.2.95:4.3[-kdeprefix] - ) - kdeprefix? ( - !kde-base/kdemaildir:${SLOT} - !<kde-base/kdepim-kresources-4.2.95:${SLOT}[kdeprefix] - ) >=app-office/akonadi-server-1.2.1 " +# @since 4.3 - blocks kdemaildir - no longer provided (it's in akonadi now) +add_blocker kdemaildir +add_blocker kdepim-kresources '<4.2.95' + [[ ${KMNAME} = "kdepim-runtime" ]] && S="${WORKDIR}/${KMNAME}-${PV}" src_prepare() { diff --git a/kde-base/akonadi/akonadi-4.3.9999.ebuild b/kde-base/akonadi/akonadi-4.3.9999.ebuild index 24023712630..9e5dc7f181e 100644 --- a/kde-base/akonadi/akonadi-4.3.9999.ebuild +++ b/kde-base/akonadi/akonadi-4.3.9999.ebuild @@ -29,21 +29,14 @@ DEPEND=" $(add_kdebase_dep kdepimlibs) x11-misc/shared-mime-info " -# @since 4.3 - blocks kdemaildir - no longer provided (it's in akonadi now) RDEPEND="${DEPEND} - !kdeprefix? ( - !kde-base/kdemaildir[-kdeprefix] - !~kde-base/kdepim-kresources-4.2.3[-kdeprefix] - !~kde-base/kdepim-kresources-4.2.4[-kdeprefix] - !<kde-base/kdepim-kresources-4.2.95:4.3[-kdeprefix] - ) - kdeprefix? ( - !kde-base/kdemaildir:${SLOT} - !<kde-base/kdepim-kresources-4.2.95:${SLOT}[kdeprefix] - ) >=app-office/akonadi-server-1.2.1 " +# @since 4.3 - blocks kdemaildir - no longer provided (it's in akonadi now) +add_blocker kdemaildir +add_blocker kdepim-kresources '<4.2.95' + [[ ${KMNAME} = "kdepim-runtime" ]] && S="${WORKDIR}/${KMNAME}-${PV}" src_prepare() { diff --git a/kde-base/akonadi/akonadi-9999-r1.ebuild b/kde-base/akonadi/akonadi-9999-r1.ebuild index 24023712630..9e5dc7f181e 100644 --- a/kde-base/akonadi/akonadi-9999-r1.ebuild +++ b/kde-base/akonadi/akonadi-9999-r1.ebuild @@ -29,21 +29,14 @@ DEPEND=" $(add_kdebase_dep kdepimlibs) x11-misc/shared-mime-info " -# @since 4.3 - blocks kdemaildir - no longer provided (it's in akonadi now) RDEPEND="${DEPEND} - !kdeprefix? ( - !kde-base/kdemaildir[-kdeprefix] - !~kde-base/kdepim-kresources-4.2.3[-kdeprefix] - !~kde-base/kdepim-kresources-4.2.4[-kdeprefix] - !<kde-base/kdepim-kresources-4.2.95:4.3[-kdeprefix] - ) - kdeprefix? ( - !kde-base/kdemaildir:${SLOT} - !<kde-base/kdepim-kresources-4.2.95:${SLOT}[kdeprefix] - ) >=app-office/akonadi-server-1.2.1 " +# @since 4.3 - blocks kdemaildir - no longer provided (it's in akonadi now) +add_blocker kdemaildir +add_blocker kdepim-kresources '<4.2.95' + [[ ${KMNAME} = "kdepim-runtime" ]] && S="${WORKDIR}/${KMNAME}-${PV}" src_prepare() { diff --git a/kde-base/drkonqi/Manifest b/kde-base/drkonqi/Manifest index 568119e3b52..a785494cf5c 100644 --- a/kde-base/drkonqi/Manifest +++ b/ |
