From c6940a97958be1d9981a3b5fb3ae27f74414e57f Mon Sep 17 00:00:00 2001
From: Chris Larson <chris_larson@mentor.com>
Date: Wed, 24 Mar 2010 09:21:53 -0700
Subject: bb.utils: remove old portage remnants

The following utility functions were removed.  Note that in this particular
case we're bypassing a proper deprecation process, as these functions are
clearly not utilized, are obvious remnants of old ways of doing things, and
some of which do not even function properly.

- tokenize
- evaluate
- flatten
- relparse

- ververify
- isjustname
- isspecific
- catpkgsplit
- pkgsplit
- pkgcmp
- dep_parenreduce
- dep_opconvert

(Bitbake rev: 62983ad9b151ee8d51e8cf9a31c736c7813edf16)

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
---
 bitbake/lib/bb/__init__.py |  18 +-
 bitbake/lib/bb/utils.py    | 571 ---------------------------------------------
 2 files changed, 1 insertion(+), 588 deletions(-)

(limited to 'bitbake/lib/bb')

diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py
index ae53b481c..f84bcd5f6 100644
--- a/bitbake/lib/bb/__init__.py
+++ b/bitbake/lib/bb/__init__.py
@@ -32,20 +32,7 @@ __all__ = [
 
     "mkdirhier",
     "movefile",
-
-    "tokenize",
-    "evaluate",
-    "flatten",
-    "relparse",
-    "ververify",
-    "isjustname",
-    "isspecific",
-    "pkgsplit",
-    "catpkgsplit",
     "vercmp",
-    "pkgcmp",
-    "dep_parenreduce",
-    "dep_opconvert",
 
 # fetch
     "decodeurl",
@@ -98,10 +85,7 @@ def fatal(*args):
 from bb.fetch import MalformedUrl, encodeurl, decodeurl
 from bb.data import VarExpandError
 from bb.utils import mkdirhier, movefile, copyfile, which
-from bb.utils import tokenize, evaluate, flatten
-from bb.utils import vercmp, pkgcmp, relparse, ververify
-from bb.utils import pkgsplit, catpkgsplit, isjustname, isspecific
-from bb.utils import dep_parenreduce, dep_opconvert
+from bb.utils import vercmp
 
 if __name__ == "__main__":
     import doctest, bb
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index ef049f7c7..5b7e7a360 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -615,574 +615,3 @@ def which(path, item, direction = 0):
             return next
 
     return ""
-
-whitespace = '\t\n\x0b\x0c\r '
-lowercase = 'abcdefghijklmnopqrstuvwxyz'
-
-def tokenize(mystring):
-    """Breaks a string like 'foo? (bar) oni? (blah (blah))' into (possibly embedded) lists:
-
-    >>> tokenize("x")
-    ['x']
-    >>> tokenize("x y")
-    ['x', 'y']
-    >>> tokenize("(x y)")
-    [['x', 'y']]
-    >>> tokenize("(x y) b c")
-    [['x', 'y'], 'b', 'c']
-    >>> tokenize("foo? (bar) oni? (blah (blah))")
-    ['foo?', ['bar'], 'oni?', ['blah', ['blah']]]
-    >>> tokenize("sys-apps/linux-headers nls? (sys-devel/gettext)")
-    ['sys-apps/linux-headers', 'nls?', ['sys-devel/gettext']]
-    """
-
-    newtokens = []
-    curlist   = newtokens
-    prevlists = []
-    level     = 0
-    accum     = ""
-    for x in mystring:
-        if x=="(":
-            if accum:
-                curlist.append(accum)
-                accum=""
-            prevlists.append(curlist)
-            curlist=[]
-            level=level+1
-        elif x==")":
-            if accum:
-                curlist.append(accum)
-                accum=""
-            if level==0:
-                print "!!! tokenizer: Unmatched left parenthesis in:\n'"+mystring+"'"
-                return None
-            newlist=curlist
-            curlist=prevlists.pop()
-            curlist.append(newlist)
-            level=level-1
-        elif x in whitespace:
-            if accum:
-                curlist.append(accum)
-                accum=""
-        else:
-            accum=accum+x
-    if accum:
-        curlist.append(accum)
-    if (level!=0):
-        print "!!! tokenizer: Exiting with unterminated parenthesis in:\n'"+mystring+"'"
-        return None
-    return newtokens
-
-def evaluate(tokens,mydefines,allon=0):
-    """Removes tokens based on whether conditional definitions exist or not.
-    Recognizes !
-
-    >>> evaluate(['sys-apps/linux-headers', 'nls?', ['sys-devel/gettext']], {})
-    ['sys-apps/linux-headers']
-
-    Negate the flag:
-
-    >>> evaluate(['sys-apps/linux-headers', '!nls?', ['sys-devel/gettext']], {})
-    ['sys-apps/linux-headers', ['sys-devel/gettext']]
-
-    Define 'nls':
-
-    >>> evaluate(['sys-apps/linux-headers', 'nls?', ['sys-devel/gettext']], {"nls":1})
-    ['sys-apps/linux-headers', ['sys-devel/gettext']]
-
-    Turn allon on:
-
-    >>> evaluate(['sys-apps/linux-headers', 'nls?', ['sys-devel/gettext']], {}, True)
-    ['sys-apps/linux-headers', ['sys-devel/gettext']]
-    """
-
-    if tokens == None:
-        return None
-    mytokens = tokens + []        # this copies the list
-    pos = 0
-    while pos < len(mytokens):
-        if type(mytokens[pos]) == types.ListType:
-            evaluate(mytokens[pos], mydefines)
-            if not len(mytokens[pos]):
-                del mytokens[pos]
-                continue
-        elif mytokens[pos][-1] == "?":
-            cur = mytokens[pos][:-1]
-            del mytokens[pos]
-            if allon:
-                if cur[0] == "!":
-                    del mytokens[pos]
-            else:
-                if cur[0] == "!":
-                    if (cur[1:] in mydefines) and (pos < len(mytokens)):
-                        del mytokens[pos]
-                        continue
-                elif (cur not in mydefines) and (pos < len(mytokens)):
-                    del mytokens[pos]
-                    continue
-        pos = pos + 1
-    return mytokens
-
-def flatten(mytokens):
-    """Converts nested arrays into a flat arrays:
-
-    >>> flatten([1,[2,3]])
-    [1, 2, 3]
-    >>> flatten(['sys-apps/linux-headers', ['sys-devel/gettext']])
-    ['sys-apps/linux-headers', 'sys-devel/gettext']
-    """
-
-    newlist=[]
-    for x in mytokens:
-        if type(x)==types.ListType:
-            newlist.extend(flatten(x))
-        else:
-            newlist.append(x)
-    return newlist
-
-_package_weights_ = {"pre":-2,"p":0,"alpha":-4,"beta":-3,"rc":-1}    # dicts are unordered
-_package_ends_    = ["pre", "p", "alpha", "beta", "rc", "cvs", "bk", "HEAD" ]            # so we need ordered list
-
-def relparse(myver):
-    """Parses the last elements of a version number into a triplet, that can
-    later be compared:
-
-    >>> relparse('1.2_pre3')
-    [1.2, -2, 3.0]
-    >>> relparse('1.2b')
-    [1.2, 98, 0]
-    >>> relparse('1.2')
-    [1.2, 0, 0]
-    """
-
-    number   = 0
-    p1       = 0
-    p2       = 0
-    mynewver = myver.split('_')
-    if len(mynewver)==2:
-        # an _package_weights_
-        number = float(mynewver[0])
-        match = 0
-        for x in _package_ends_:
-            elen = len(x)
-            if mynewver[1][:elen] == x:
-                match = 1
-                p1 = _package_weights_[x]
-                try:
-                    p2 = float(mynewver[1][elen:])
-                except:
-                    p2 = 0
-                break
-        if not match:
-            # normal number or number with letter at end
-            divider = len(myver)-1
-            if myver[divider:] not in "1234567890":
-                # letter at end
-                p1 = ord(myver[divider:])
-                number = float(myver[0:divider])
-            else:
-                number = float(myver)
-    else:
-        # normal number or number with letter at end
-        divider = len(myver)-1
-        if myver[divider:] not in "1234567890":
-            #letter at end
-            p1     = ord(myver[divider:])
-            number = float(myver[0:divider])
-        else:
-            number = float(myver)
-    return [number,p1,p2]
-
-__ververify_cache__ = {}
-
-def ververify(myorigval,silent=1):
-    """Returns 1 if given a valid version string, els 0. Valid versions are in the format
-
-    <v1>.<v2>...<vx>[a-z,_{_package_weights_}[vy]]
-
-    >>> ververify('2.4.20')
-    1
-    >>> ververify('2.4..20')        # two dots
-    0
-    >>> ververify('2.x.20')            # 'x' is not numeric
-    0
-    >>> ververify('2.4.20a')
-    1
-    >>> ververify('2.4.20cvs')        # only one trailing letter
-    0
-    >>> ververify('1a')
-    1
-    >>> ververify('test_a')            # no version at all
-    0
-    >>> ververify('2.4.20_beta1')
-    1
-    >>> ververify('2.4.20_beta')
-    1
-    >>> ververify('2.4.20_wrongext')    # _wrongext is no valid trailer
-    0
-    """
-
-    # Lookup the cache first
-    try:
-        return __ververify_cache__[myorigval]
-    except KeyError:
-        pass
-
-    if len(myorigval) == 0:
-        if not silent:
-            bb.error("package version is empty")
-        __ververify_cache__[myorigval] = 0
-        return 0
-    myval = myorigval.split('.')
-    if len(myval)==0:
-        if not silent:
-            bb.error("package name has empty version string")
-        __ververify_cache__[myorigval] = 0
-        return 0
-    # all but the last version must be a numeric
-    for x in myval[:-1]:
-        if not len(x):
-            if not silent:
-                bb.error("package version has two points in a row")
-            __ververify_cache__[myorigval] = 0
-            return 0
-        try:
-            foo = int(x)
-        except:
-            if not silent:
-                bb.error("package version contains non-numeric '"+x+"'")
-            __ververify_cache__[myorigval] = 0
-            return 0
-    if not len(myval[-1]):
-            if not silent:
-                bb.error("package version has trailing dot")
-            __ververify_cache__[myorigval] = 0
-            return 0
-    try:
-        foo = int(myval[-1])
-        __ververify_cache__[myorigval] = 1
-        return 1
-    except:
-        pass
-
-    # ok, our last component is not a plain number or blank, let's continue
-    if myval[-1][-1] in lowercase:
-        try:
-            foo = int(myval[-1][:-1])
-            return 1
-            __ververify_cache__[myorigval] = 1
-            # 1a, 2.0b, etc.
-        except:
-            pass
-    # ok, maybe we have a 1_alpha or 1_beta2; let's see
-    ep=string.split(myval[-1],"_")
-    if len(ep)!= 2:
-        if not silent:
-            bb.error("package version has more than one letter at then end")
-        __ververify_cache__[myorigval] = 0
-        return 0
-    try:
-        foo = string.atoi(ep[0])
-    except:
-        # this needs to be numeric, i.e. the "1" in "1_alpha"
-        if not silent:
-            bb.error("package version must have numeric part before the '_'")
-        __ververify_cache__[myorigval] = 0
-        return 0
-
-    for mye in _package_ends_:
-        if ep[1][0:len(mye)] == mye:
-            if len(mye) == len(ep[1]):
-                # no trailing numeric is ok
-                __ververify_cache__[myorigval] = 1
-                return 1
-            else:
-                try:
-                    foo = string.atoi(ep[1][len(mye):])
-                    __ververify_cache__[myorigval] = 1
-                    return 1
-                except:
-                    # if no _package_weights_ work, *then* we return 0
-                    pass
-    if not silent:
-        bb.error("package version extension after '_' is invalid")
-    __ververify_cache__[myorigval] = 0
-    return 0
-
-def isjustname(mypkg):
-    myparts = string.split(mypkg,'-')
-    for x in myparts:
-        if ververify(x):
-            return 0
-    return 1
-
-_isspecific_cache_={}
-
-def isspecific(mypkg):
-    "now supports packages with no category"
-    try:
-        return __isspecific_cache__[mypkg]
-    except:
-        pass
-
-    mysplit = string.split(mypkg,"/")
-    if not isjustname(mysplit[-1]):
-            __isspecific_cache__[mypkg] = 1
-            return 1
-    __isspecific_cache__[mypkg] = 0
-    return 0
-
-__pkgsplit_cache__={}
-
-def pkgsplit(mypkg, silent=1):
-
-    """This function can be used as a package verification function. If
-    it is a valid name, pkgsplit will return a list containing:
-    [pkgname, pkgversion(norev), pkgrev ].
-
-    >>> pkgsplit('')
-    >>> pkgsplit('x')
-    >>> pkgsplit('x-')
-    >>> pkgsplit('-1')
-    >>> pkgsplit('glibc-1.2-8.9-r7')
-    >>> pkgsplit('glibc-2.2.5-r7')
-    ['glibc', '2.2.5', 'r7']
-    >>> pkgsplit('foo-1.2-1')
-    >>> pkgsplit('Mesa-3.0')
-    ['Mesa', '3.0', 'r0']
-    """
-
-    try:
-        return __pkgsplit_cache__[mypkg]
-    except KeyError:
-        pass
-
-    myparts = string.split(mypkg,'-')
-    if len(myparts) < 2:
-        if not silent:
-            bb.error("package name without name or version part")
-        __pkgsplit_cache__[mypkg] = None
-        return None
-    for x in myparts:
-        if len(x) == 0:
-            if not silent:
-                bb.error("package name with empty name or version part")
-            __pkgsplit_cache__[mypkg] = None
-            return None
-    # verify rev
-    revok = 0
-    myrev = myparts[-1]
-    ververify(myrev, silent)
-    if len(myrev) and myrev[0] == "r":
-        try:
-            string.atoi(myrev[1:])
-            revok = 1
-        except:
-            pass
-    if revok:
-        if ververify(myparts[-2]):
-            if len(myparts) == 2:
-                __pkgsplit_cache__[mypkg] = None
-                return None
-            else:
-                for x in myparts[:-2]:
-                    if ververify(x):
-                        __pkgsplit_cache__[mypkg]=None
-                        return None
-                        # names can't have versiony looking parts
-                myval=[string.join(myparts[:-2],"-"),myparts[-2],myparts[-1]]
-                __pkgsplit_cache__[mypkg]=myval
-                return myval
-        else:
-            __pkgsplit_cache__[mypkg] = None
-            return None
-
-    elif ververify(myparts[-1],silent):
-        if len(myparts)==1:
-            if not silent:
-                print "!!! Name error in",mypkg+": missing name part."
-            __pkgsplit_cache__[mypkg]=None
-            return None
-        else:
-            for x in myparts[:-1]:
-                if ververify(x):
-                    if not silent: bb.error("package name has multiple version parts")
-                    __pkgsplit_cache__[mypkg] = None
-                    return None
-            myval = [string.join(myparts[:-1],"-"), myparts[-1],"r0"]
-            __pkgsplit_cache__[mypkg] = myval
-            return myval
-    else:
-        __pkgsplit_cache__[mypkg] = None
-        return None
-
-__catpkgsplit_cache__ = {}
-
-def catpkgsplit(mydata,silent=1):
-    """returns [cat, pkgname, version, rev ]
-
-    >>> catpkgsplit('sys-libs/glibc-1.2-r7')
-    ['sys-libs', 'glibc', '1.2', 'r7']
-    >>> catpkgsplit('glibc-1.2-r7')
-    [None, 'glibc', '1.2', 'r7']
-    """
-
-    try:
-        return __catpkgsplit_cache__[mydata]
-    except KeyError:
-        pass
-
-    cat = os.path.basename(os.path.dirname(mydata))
-    mydata = os.path.join(cat, os.path.basename(mydata))
-    if mydata[-3:] == '.bb':
-        mydata = mydata[:-3]
-
-    mysplit = mydata.split("/")
-    p_split = None
-    splitlen = len(mysplit)
-    if splitlen == 1:
-        retval = [None]
-        p_split = pkgsplit(mydata,silent)
-    else:
-        retval = [mysplit[splitlen - 2]]
-        p_split = pkgsplit(mysplit[splitlen - 1],silent)
-    if not p_split:
-        __catpkgsplit_cache__[mydata] = None
-        return None
-    retval.extend(p_split)
-    __catpkgsplit_cache__[mydata] = retval
-    return retval
-
-def pkgcmp(pkg1,pkg2):
-    """ Compares two packages, which should have been split via
-    pkgsplit(). if the return value val is less than zero, then pkg2 is
-    newer than pkg1, zero if equal and positive if older.
-
-    >>> pkgcmp(['glibc', '2.2.5', 'r7'], ['glibc', '2.2.5', 'r7'])
-    0
-    >>> pkgcmp(['glibc', '2.2.5', 'r4'], ['glibc', '2.2.5', 'r7'])
-    -1
-    >>> pkgcmp(['glibc', '2.2.5', 'r7'], ['glibc', '2.2.5', 'r2'])
-    1
-    """
-
-    mycmp = vercmp(pkg1[1],pkg2[1])
-    if mycmp > 0:
-        return 1
-    if mycmp < 0:
-        return -1
-    r1=string.atoi(pkg1[2][1:])
-    r2=string.atoi(pkg2[2][1:])
-    if r1 > r2:
-        return 1
-    if r2 > r1:
-        return -1
-    return 0
-
-def dep_parenreduce(mysplit, mypos=0):
-    """Accepts a list of strings, and converts '(' and ')' surrounded items to sub-lists:
-
-    >>> dep_parenreduce([''])
-    ['']
-    >>> dep_parenreduce(['1', '2', '3'])
-    ['1', '2', '3']
-    >>> dep_parenreduce(['1', '(', '2', '3', ')', '4'])
-    ['1', ['2', '3'], '4']
-    """
-
-    while mypos < len(mysplit):
-        if mysplit[mypos] == "(":
-            firstpos = mypos
-            mypos = mypos + 1
-            while mypos < len(mysplit):
-                if mysplit[mypos] == ")":
-                    mysplit[firstpos:mypos+1] = [mysplit[firstpos+1:mypos]]
-                    mypos = firstpos
-                    break
-                elif mysplit[mypos] == "(":
-                    # recurse
-                    mysplit = dep_parenreduce(mysplit,mypos)
-                mypos = mypos + 1
-        mypos = mypos + 1
-    return mysplit
-
-def dep_opconvert(mysplit, myuse):
-    "Does dependency operator conversion"
-
-    mypos   = 0
-    newsplit = []
-    while mypos < len(mysplit):
-        if type(mysplit[mypos]) == types.ListType:
-            newsplit.append(dep_opconvert(mysplit[mypos],myuse))
-            mypos += 1
-        elif mysplit[mypos] == ")":
-            # mismatched paren, error
-            return None
-        elif mysplit[mypos]=="||":
-            if ((mypos+1)>=len(mysplit)) or (type(mysplit[mypos+1])!=types.ListType):
-                # || must be followed by paren'd list
-                return None
-            try:
-                mynew = dep_opconvert(mysplit[mypos+1],myuse)
-            except Exception, e:
-                bb.error("unable to satisfy OR dependancy: " + string.join(mysplit," || "))
-                raise e
-            mynew[0:0] = ["||"]
-            newsplit.append(mynew)
-            mypos += 2
-        elif mysplit[mypos][-1] == "?":
-            # use clause, i.e "gnome? ( foo bar )"
-            # this is a quick and dirty hack so that repoman can enable all USE vars:
-            if (len(myuse) == 1) and (myuse[0] == "*"):
-                # enable it even if it's ! (for repoman) but kill it if it's
-                # an arch variable that isn't for this arch. XXX Sparc64?
-                if (mysplit[mypos][:-1] not in settings.usemask) or \
-                        (mysplit[mypos][:-1]==settings["ARCH"]):
-                    enabled=1
-                else:
-                    enabled=0
-            else:
-                if mysplit[mypos][0] == "!":
-                    myusevar = mysplit[mypos][1:-1]
-                    enabled = not myusevar in myuse
-                    #if myusevar in myuse:
-                    #    enabled = 0
-                    #else:
-                    #    enabled = 1
-                else:
-                    myusevar=mysplit[mypos][:-1]
-                    enabled = myusevar in myuse
-                    #if myusevar in myuse:
-                    #    enabled=1
-                    #else:
-                    #    enabled=0
-            if (mypos +2 < len(mysplit)) and (mysplit[mypos+2] == ":"):
-                # colon mode
-                if enabled:
-                    # choose the first option
-                    if type(mysplit[mypos+1]) == types.ListType:
-                        newsplit.append(dep_opconvert(mysplit[mypos+1],myuse))
-                    else:
-                        newsplit.append(mysplit[mypos+1])
-                else:
-                    # choose the alternate option
-                    if type(mysplit[mypos+1]) == types.ListType:
-                        newsplit.append(dep_opconvert(mysplit[mypos+3],myuse))
-                    else:
-                        newsplit.append(mysplit[mypos+3])
-                mypos += 4
-            else:
-                # normal use mode
-                if enabled:
-                    if type(mysplit[mypos+1]) == types.ListType:
-                        newsplit.append(dep_opconvert(mysplit[mypos+1],myuse))
-                    else:
-                        newsplit.append(mysplit[mypos+1])
-                # otherwise, continue
-                mypos += 2
-        else:
-            # normal item
-            newsplit.append(mysplit[mypos])
-            mypos += 1
-    return newsplit
-
-- 
cgit v1.2.3