]> code.ossystems Code Review - openembedded-core.git/commitdiff
Move encodeurl, decodeurl into bb.fetch.
authorChris Larson <clarson@kergoth.com>
Sun, 19 Jul 2009 16:51:29 +0000 (09:51 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Mon, 22 Mar 2010 14:54:10 +0000 (14:54 +0000)
(Bitbake rev: 867d36f9afce2d298874ac7563e5b3852ef04659)

Signed-off-by: Chris Larson <clarson@kergoth.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/__init__.py
bitbake/lib/bb/fetch/__init__.py

index 3195e72a620c72093f6601fd1b97d1a64390bcc0..de5f0321fa2d046df2f771bfaaa05c552945b9d1 100644 (file)
@@ -81,7 +81,7 @@ if "BBDEBUG" in os.environ:
         bb.msg.set_debug_level(level)
 
 # For compatibility
-from bb.fetch import MalformedUrl
+from bb.fetch import MalformedUrl, encodeurl, decodeurl
 from bb.data import VarExpandError
 
 
@@ -299,113 +299,6 @@ def copyfile(src,dest,newmtime=None,sstat=None):
         newmtime=sstat[stat.ST_MTIME]
     return newmtime
 
-#######################################################################
-#######################################################################
-#
-# SECTION: Download
-#
-# PURPOSE: Download via HTTP, FTP, CVS, BITKEEPER, handling of MD5-signatures
-#          and mirrors
-#
-#######################################################################
-#######################################################################
-
-def decodeurl(url):
-    """Decodes an URL into the tokens (scheme, network location, path,
-    user, password, parameters).
-
-    >>> decodeurl("http://www.google.com/index.html")
-    ('http', 'www.google.com', '/index.html', '', '', {})
-
-    CVS url with username, host and cvsroot. The cvs module to check out is in the
-    parameters:
-
-    >>> decodeurl("cvs://anoncvs@cvs.handhelds.org/cvs;module=familiar/dist/ipkg")
-    ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', '', {'module': 'familiar/dist/ipkg'})
-
-    Dito, but this time the username has a password part. And we also request a special tag
-    to check out.
-
-    >>> decodeurl("cvs://anoncvs:anonymous@cvs.handhelds.org/cvs;module=familiar/dist/ipkg;tag=V0-99-81")
-    ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', 'anonymous', {'tag': 'V0-99-81', 'module': 'familiar/dist/ipkg'})
-    """
-
-    m = re.compile('(?P<type>[^:]*)://((?P<user>.+)@)?(?P<location>[^;]+)(;(?P<parm>.*))?').match(url)
-    if not m:
-        raise MalformedUrl(url)
-
-    type = m.group('type')
-    location = m.group('location')
-    if not location:
-        raise MalformedUrl(url)
-    user = m.group('user')
-    parm = m.group('parm')
-
-    locidx = location.find('/')
-    if locidx != -1:
-        host = location[:locidx]
-        path = location[locidx:]
-    else:
-        host = ""
-        path = location
-    if user:
-        m = re.compile('(?P<user>[^:]+)(:?(?P<pswd>.*))').match(user)
-        if m:
-            user = m.group('user')
-            pswd = m.group('pswd')
-    else:
-        user = ''
-        pswd = ''
-
-    p = {}
-    if parm:
-        for s in parm.split(';'):
-            s1,s2 = s.split('=')
-            p[s1] = s2
-
-    return (type, host, path, user, pswd, p)
-
-#######################################################################
-
-def encodeurl(decoded):
-    """Encodes a URL from tokens (scheme, network location, path,
-    user, password, parameters).
-
-    >>> encodeurl(['http', 'www.google.com', '/index.html', '', '', {}])
-    'http://www.google.com/index.html'
-
-    CVS with username, host and cvsroot. The cvs module to check out is in the
-    parameters:
-
-    >>> encodeurl(['cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', '', {'module': 'familiar/dist/ipkg'}])
-    'cvs://anoncvs@cvs.handhelds.org/cvs;module=familiar/dist/ipkg'
-
-    Dito, but this time the username has a password part. And we also request a special tag
-    to check out.
-
-    >>> encodeurl(['cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', 'anonymous', {'tag': 'V0-99-81', 'module': 'familiar/dist/ipkg'}])
-    'cvs://anoncvs:anonymous@cvs.handhelds.org/cvs;tag=V0-99-81;module=familiar/dist/ipkg'
-    """
-
-    (type, host, path, user, pswd, p) = decoded
-
-    if not type or not path:
-        fatal("invalid or missing parameters for url encoding")
-    url = '%s://' % type
-    if user:
-        url += "%s" % user
-        if pswd:
-            url += ":%s" % pswd
-        url += "@"
-    if host:
-        url += "%s" % host
-    url += "%s" % path
-    if p:
-        for parm in p.keys():
-            url += ";%s=%s" % (parm, p[parm])
-
-    return url
-
 #######################################################################
 
 def which(path, item, direction = 0):
index 875cda8929e6d0eedb71e204dbd3fdb0286feae2..f40d7be33458140e93d991ea91f6d74c522629c1 100644 (file)
@@ -50,6 +50,100 @@ class MD5SumError(Exception):
 class InvalidSRCREV(Exception):
     """Exception raised when an invalid SRCREV is encountered"""
 
+def decodeurl(url):
+    """Decodes an URL into the tokens (scheme, network location, path,
+    user, password, parameters).
+
+    >>> decodeurl("http://www.google.com/index.html")
+    ('http', 'www.google.com', '/index.html', '', '', {})
+
+    CVS url with username, host and cvsroot. The cvs module to check out is in the
+    parameters:
+
+    >>> decodeurl("cvs://anoncvs@cvs.handhelds.org/cvs;module=familiar/dist/ipkg")
+    ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', '', {'module': 'familiar/dist/ipkg'})
+
+    Dito, but this time the username has a password part. And we also request a special tag
+    to check out.
+
+    >>> decodeurl("cvs://anoncvs:anonymous@cvs.handhelds.org/cvs;module=familiar/dist/ipkg;tag=V0-99-81")
+    ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', 'anonymous', {'tag': 'V0-99-81', 'module': 'familiar/dist/ipkg'})
+    """
+
+    m = re.compile('(?P<type>[^:]*)://((?P<user>.+)@)?(?P<location>[^;]+)(;(?P<parm>.*))?').match(url)
+    if not m:
+        raise MalformedUrl(url)
+
+    type = m.group('type')
+    location = m.group('location')
+    if not location:
+        raise MalformedUrl(url)
+    user = m.group('user')
+    parm = m.group('parm')
+
+    locidx = location.find('/')
+    if locidx != -1:
+        host = location[:locidx]
+        path = location[locidx:]
+    else:
+        host = ""
+        path = location
+    if user:
+        m = re.compile('(?P<user>[^:]+)(:?(?P<pswd>.*))').match(user)
+        if m:
+            user = m.group('user')
+            pswd = m.group('pswd')
+    else:
+        user = ''
+        pswd = ''
+
+    p = {}
+    if parm:
+        for s in parm.split(';'):
+            s1,s2 = s.split('=')
+            p[s1] = s2
+
+    return (type, host, path, user, pswd, p)
+
+def encodeurl(decoded):
+    """Encodes a URL from tokens (scheme, network location, path,
+    user, password, parameters).
+
+    >>> encodeurl(['http', 'www.google.com', '/index.html', '', '', {}])
+    'http://www.google.com/index.html'
+
+    CVS with username, host and cvsroot. The cvs module to check out is in the
+    parameters:
+
+    >>> encodeurl(['cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', '', {'module': 'familiar/dist/ipkg'}])
+    'cvs://anoncvs@cvs.handhelds.org/cvs;module=familiar/dist/ipkg'
+
+    Dito, but this time the username has a password part. And we also request a special tag
+    to check out.
+
+    >>> encodeurl(['cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', 'anonymous', {'tag': 'V0-99-81', 'module': 'familiar/dist/ipkg'}])
+    'cvs://anoncvs:anonymous@cvs.handhelds.org/cvs;tag=V0-99-81;module=familiar/dist/ipkg'
+    """
+
+    (type, host, path, user, pswd, p) = decoded
+
+    if not type or not path:
+        fatal("invalid or missing parameters for url encoding")
+    url = '%s://' % type
+    if user:
+        url += "%s" % user
+        if pswd:
+            url += ":%s" % pswd
+        url += "@"
+    if host:
+        url += "%s" % host
+    url += "%s" % path
+    if p:
+        for parm in p.keys():
+            url += ";%s=%s" % (parm, p[parm])
+
+    return url
+
 def uri_replace(uri, uri_find, uri_replace, d):
 #   bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: operating on %s" % uri)
     if not uri or not uri_find or not uri_replace: