Explorar el Código

bitbake: Sync with bitbake 1.8 branch

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4352 311d38ba-8fff-0310-9ca6-ca027cbcb966
Richard Purdie hace 17 años
padre
commit
748039c0e1

+ 4 - 0
bitbake/ChangeLog

@@ -26,6 +26,10 @@ Changes in BitBake 1.8.x:
 	  failed where needed. Fixes --continue mode crashes.
 	- Fix problems with recrdeptask handling where some idepends weren't handled
 	  correctly.
+	- Work around refs/HEAD issues with git over http (#3410)
+	- Add proxy support to the CVS fetcher (from Cyril Chemparathy)
+	- Improve runfetchcmd so errors are seen and various GIT variables are exported
+	- Add ability to fetchers to check URL validity without downloading
 
 Changes in BitBake 1.8.10:
 	- Psyco is available only for x86 - do not use it on other architectures.

+ 24 - 0
bitbake/lib/bb/fetch/__init__.py

@@ -162,6 +162,22 @@ def go(d):
                 Fetch.write_md5sum(u, ud, d)
             bb.utils.unlockfile(lf)
 
+
+def checkstatus(d):
+    """
+    Check all urls exist upstream
+    init must have previously been called
+    """
+    urldata = init([], d, True)
+
+    for u in urldata:
+        ud = urldata[u]
+        m = ud.method
+        bb.msg.note(1, bb.msg.domain.Fetcher, "Testing URL %s" % u)
+        ret = m.checkstatus(u, ud, d)
+        if not ret:
+            bb.msg.fatal(bb.msg.domain.Fetcher, "URL %s doesn't work" % u)
+
 def localpaths(d):
     """
     Return a list of the local filenames, assuming successful fetch
@@ -364,6 +380,14 @@ class Fetch(object):
         """
         raise NoMethodError("Missing implementation for url")
 
+    def checkstatus(self, url, urldata, d):
+        """
+        Check the status of a URL
+        Assumes localpath was called first
+        """
+        bb.msg.note(1, bb.msg.domain.Fetcher, "URL %s could not be checked for status since no method exists." % url)
+        return True
+
     def getSRCDate(urldata, d):
         """
         Return the SRC Date for the component

+ 1 - 1
bitbake/lib/bb/fetch/cvs.py

@@ -118,7 +118,7 @@ class Cvs(Fetch):
         if 'norecurse' in ud.parm:
             options.append("-l")
         if ud.date:
-            options.append("-D %s" % ud.date)
+            options.append("-D \"%s UTC\"" % ud.date)
         if ud.tag:
             options.append("-r %s" % ud.tag)
 

+ 8 - 0
bitbake/lib/bb/fetch/local.py

@@ -59,3 +59,11 @@ class Local(Fetch):
         """Fetch urls (no-op for Local method)"""
         # no need to fetch local files, we'll deal with them in place.
         return 1
+
+    def checkstatus(self, url, urldata, d):
+        """
+        Check the status of the url
+        """
+        if os.path.exists(urldata.localpath):
+           return True
+        return False

+ 11 - 5
bitbake/lib/bb/fetch/wget.py

@@ -48,11 +48,13 @@ class Wget(Fetch):
 
         return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
 
-    def go(self, uri, ud, d):
+    def go(self, uri, ud, d, checkonly = False):
         """Fetch urls"""
 
         def fetch_uri(uri, ud, d):
-            if os.path.exists(ud.localpath):
+            if checkonly:
+                fetchcmd = data.getVar("FETCHCOMMAND", d, 1) + " " + data.getVar("FETCHOPTION_checkonly", d, 1)
+            elif os.path.exists(ud.localpath):
                 # file exists, but we didnt complete it.. trying again..
                 fetchcmd = data.getVar("RESUMECOMMAND", d, 1)
             else:
@@ -83,10 +85,10 @@ class Wget(Fetch):
             newuri = uri_replace(uri, find, replace, d)
             if newuri != uri:
                 if fetch_uri(newuri, ud, localdata):
-                    return
+                    return True
 
         if fetch_uri(uri, ud, localdata):
-            return
+            return True
 
         # try mirrors
         mirrors = [ i.split() for i in (data.getVar('MIRRORS', localdata, 1) or "").split('\n') if i ]
@@ -94,6 +96,10 @@ class Wget(Fetch):
             newuri = uri_replace(uri, find, replace, d)
             if newuri != uri:
                 if fetch_uri(newuri, ud, localdata):
-                    return
+                    return True
 
         raise FetchError(uri)
+
+
+    def checkstatus(self, uri, ud, d):
+        return self.go(uri, ud, d, True)